๐Ÿ’ปDEV-STUDY

AWS VPC ๋ฐ ์„œ๋ธŒ๋„ท ์„ค์ • & EC2 ์ƒ์„ฑ AWS VPC ๋ฐ ์„œ๋ธŒ๋„ท ์„ค์ •ํ•˜๊ธฐ & Public EC2 ์ƒ์„ฑ ํ›„ ์™ธ๋ถ€ ์ ‘๊ทผ ํ—ˆ์šฉ1. VPC ์ง์ ‘ ๋งŒ๋“  ํ›„ ์„ค์ • ํ™•์ธ1. VPC ์ด๋ฆ„ (sanghyun-vpc-1) ์„ค์ •2. IPv4 CIDR์—์„œ ๊ฐ€์šฉ IP๋Œ€์—ญ (10.0.0.0/16) ์„ค์ •3. ์ƒ์„ฑํ•œ VPC ํ™•์ธ 2. Subnet ์ƒ์„ฑํ•˜๊ธฐSubnet์€ Public, Private 2๊ฐœ์”ฉ ๋งŒ๋“ ๋‹ค.2๊ฐœ์”ฉ ๋งŒ๋“œ๋Š” ์ด์œ  : ๊ฐ€์šฉ์„ฑ์„ ์œ„ํ•œ Multi AZ ์„ค์ • → ํ•œ์ชฝ์˜ AZ์—์„œ ํ™”์žฌ๋ผ๋˜๊ฐ€ ๋„คํŠธ์›Œํฌ ์ด์Šˆ ๋“ฑ์ด ๋ฐœ์ƒํ–ˆ์„ ์‹œ, ๋‹ค๋ฅธ ํ•œ์ชฝ์˜ AZ๋กœ ์ปค๋ฒ„ํ•˜๊ธฐ ์œ„ํ•จ 1. ์ƒ์„ฑํ•  ์„œ๋ธŒ๋„ท์˜ VPC ์„ ํƒ(sanghyun-vpc-1)2. ์„œ๋ธŒ๋„ท ์ด๋ฆ„(public-subnet-test1) ์„ค์ •3. ๊ฐ€์šฉ ์˜์—ญ(ap-northeast-2a..
@Controller์—์„œ Exception ์ฒ˜๋ฆฌ@Controller์—์„œ Exception ์ฒ˜๋ฆฌSpring์—์„œ ์ œ๊ณตํ•˜๋Š” ๋‹ค์–‘ํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•Spring์—์„œ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๋ฉฐ, ๊ทธ ์ค‘ ๋Œ€ํ‘œ์ ์ธ ๋ฐฉ๋ฒ•์ด ExcepitonHandler, ControllerAdvice, ResponseStatusException ๋“ฑ์„ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ExceptionResolver: Spring(WAS) ๋‚ด ์˜ˆ์™ธ ์ฒ˜๋ฆฌBasicErrorController: Spring์˜ ๊ธฐ๋ณธ ์—๋Ÿฌ ์ฒ˜๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ๋กœ, ํŽ˜์ด์ง€ ๊ธฐ๋ฐ˜ ์—๋Ÿฌ๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค.์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ try-catch๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ๊ณตํ†ต ๊ด€์‹ฌ์‚ฌ(cross-cutting concerns)๋ฅผ ๋ฉ”์ธ ๋กœ์ง์—์„œ ๋ถ„๋ฆฌSpring์˜ HandlerException..
๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ์™€ @Controller๋ฅผ ์ž˜ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐฉ๋ฒ•๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐSpring ์• ํ”Œ๋ฆฌ์ผ€์ด์…ฉ๋Š˜ ๊ฐœ๋ฐœํ•  ๋•Œ, ํด๋ž˜์Šค๋ช…์€ ๋„๋ฉ”์ธ ๊ธฐ๋ฐ˜ ๋ช…์นญ๊ณผ 3๊ณ„์ธต ์•„ํ‚คํ…์ฒ˜ ๋ช…์นญ์„ ์กฐํ•ฉํ•˜์—ฌ ์ž‘์„ฑ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, PaymentService๋Š” ๋„๋ฉ”์ธ์ธ Payment์™€ ์—ญํ• ์ธ Service๋ฅผ ์กฐํ•ฉํ•œ ํด๋ž˜์Šค๋ช…์ด๋‹ค. ์ด์™€ ๊ฐ™์ด ๊ฐ ํด๋ž˜์Šค๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋„๋ฉ”์ธ๊ณผ ๊ณ„์ธต ๊ตฌ์กฐ์—๋”ฐ๋ผ ๋ช…๋ช…๋œ๋‹ค.๋„๋ฉ”์ธ ๊ธฐ๋ฐ˜ ๋ช…์นญ + 3๊ณ„์ธต ์•„ํ‚คํ…์ฒ˜ ๊ธฐ๋ฐ˜ ๋ช…์นญPaymentService = Payment(๋„๋ฉ”์ธ) + Service(3๊ณ„์ธต ์•„ํ‚คํ…์ฒ˜ ์ค‘ ์„œ๋น„์Šค ๊ณ„์ธต)UserRepository = User + RepositorryJobpostController = Jobpost + Controllerํด๋ž˜์Šค๋ฅผ ๋ฐฐ์น˜ํ•  ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ์— ๋Œ€ํ•ด์„œ๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์ด ์žˆ๋‹ค. 1...
MVC ์•„ํ‚คํ…์ณ ํŒจํ„ด / 3-Layered ์•„ํ‚คํ…์ณ ํŒจํ„ดSpring Boot์˜ ์˜์˜: (1) ์˜์กด์„ฑ ๊ด€๋ฆฌ + (2) ์ž๋™ ์„ค์ •Spring Boot๋Š” ๋ณต์žกํ•œ ์„ค์ •์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋œ ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค. ์ด๋Š” React์˜ CRA(Create-React-App)์™€ ๋น„์Šทํ•œ ์—ญํ• ์„ ํ•˜๋ฉฐ, ์ฃผ๋กœ ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์— ์ค‘์ ‘์„ ๋‘”๋‹ค. 1. ์˜์กด์„ฑ ๊ด€๋ฆฌ:spring-boot-starter-web: ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ œ๊ณต, ๋‚ด์žฅ๋œ Tomcat ์„œ๋ฒ„์™€ ํ•จ๊ป˜ ์ž๋™ ์„ค์ •์„ ์ œ๊ณตspring-boot-starter-security: ์ธ์ฆ, ์ธ๊ฐ€, ๊ถŒํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌspring-boot-starter-data-jpa: JPA ๋ฐ Hibernate ๊ด€๋ จ ์˜์กด์„ฑsprin..
@PathVariable, @RequestParam, @ModelAttribute, @RequestBody, @Vaild, @JsonIncludeSpring์—์„œ ์„ธ๋ถ€ ์š”์ฒญ์œผ๋กœ ์ธ์ž…๋˜๋Š” ๊ฐ’๋“คSpring์—์„œ๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ HTTP ์š”์ฒญ์„ ํ†ตํ•ด ์ „๋‹ฌํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ ์ปจํŠธ๋กค๋Ÿฌ์— ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.๊ฐ ์š”์ฒญ๋งˆ๋‹ค ๋ฐ์ดํ„ฐ์˜ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์ด ๋‹ฌ๋ผ์ง€๊ณ , ๊ทธ์— ๋”ฐ๋ผ Model์ด๋‚˜ View๋„ ๋‹ค์–‘ํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค. Spring์—์„œ ์š”์ฒญ๊ฐ’์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฃผ์š” ์–ด๋…ธํ…Œ์ด์…˜์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž. @PathVaribale: /api/users/{id}@PathVariable์€ URL ๊ฒฝ๋กœ์—์„œ ๋™์ ์œผ๋กœ ๊ฐ’์„ ์ถ”์ถœํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž์˜ ID๋‚˜ ํŠน์ • ๋ฆฌ์†Œ๋“œ์— ๋Œ€ํ•œ ๊ณ ์œ  ๊ฐ’์„ URL ๊ฒฝ๋กœ์—์„œ ์ง์ ‘ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.packa..
new ํ‚ค์›Œ๋“œ ์—†์ด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ / ์˜์กด์„ฑ ์ฃผ์ž…๊ฐ์ฒด ์ƒ์„ฑ ์›๋ฆฌ์Šคํ”„๋ง์—์„œ ์ฒ˜์Œ ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๋ฉด `new` ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์ง€ ์•Š์•˜๋Š”๋ฐ @Contoller ๋“ฑ ๊ฐ์ฒด๋“ค์ด ๋งŒ๋“ค์–ด์งˆ๊นŒ?์ด ์งˆ๋ฌธ์— ๋Œ€ํ•œ ํ•ด๋‹ต์€ Spring์˜ IoC(์ œ์–ด๊ถŒ ์—ญ์ „, Inversion of Control)์™€ Spring Container(Applilcation Context)์— ์žˆ๋‹ค. Spring์—์„œ new ํ‚ค์›Œ๋“œ๊ฐ€ ๋ณด์ด์ง€ ์•Š๋Š” ์ด์œ ๋Š” Spring์ด ๊ฐœ๋ฐœ์ž ๋Œ€์‹  ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ด๋ฅผ Bean์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ ๊ณผ์ •์—์„œ Spring์€ ์‹ฑ๊ธ€ํ†ค(Singleton) ํŒจํ„ด์„ ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ, ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์„ ํšจ์œจ์ ใ…‡๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ์„œ๋ฒ„์˜ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•œ๋‹ค. Spring Bean ์ด๋ž€?Spring Bean์ด๋ž€ Spring IoC(..
์ง๋ ฌํ™” / ์—ญ์ง๋ ฌํ™”HttpMessageConverter ์—ญํ• ์ง€๋‚œ ํฌ์ŠคํŒ…์—์„œ Controller์˜ ์ฒ˜๋ฆฌ / ๋ฐ˜ํ™˜์— ๋Œ€ํ•ด MessageConverter๋ฅผ ์–ธ๊ธ‰ํ–ˆ์—ˆ์ง€๋งŒ ์ •ํ™•ํžˆ๋Š” "HttpMessageConverter"๋ผ๊ณ  ํ•œ๋‹ค. HttpMessageConverter๋Š” Spring MVC์—์„œ ์š”์ฒญ๊ณผ ์‘๋‹ต์˜ HTTP ๋ฉ”์„ธ์ง€ ๋ฐ”๋””๋ฅผ ๋ณ€ํ™˜ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. Spring ์š”์ฒญ ๋ณธ๋ฌธ์„ Java ๊ฐ์ฒด๋กœ ์—ญ์ง๋ ฌํ™”ํ•˜๊ณ , ์‘๋‹ต ๋ณธ๋ฌธ์„ Java ๊ฐ์ฒด์—์„œ JSON, XML ๋“ฑ์œผ๋กœ ์ง๋ ฌํ™”ํ•˜๋Š” ๊ณผ์ •์„ ์ž๋™์œผ๋Ÿฌ ์ฒ˜๋ฆฌํ•œ๋‹ค. Spring์€ ๋‹ค์–‘ํ•œ ๊ธฐ๋ณธ ๊ตฌํ˜„์ฒด๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ, ํ•„์š”์— ๋”ฐ๋ผ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ปค์Šคํ…€ MessageConverter๋ฅผ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๋‹ค.HttpMessageConverter ๋™์ž‘์›๋ฆฌHttpMessageConverter๋Š” ํด๋ผ์ด์–ธํŠธ..
ViewResolver, @ResponseBody, MessageConverter์›น ํŽ˜์ด์ง€(HTML) ๋ฐ˜ํ™˜๊ณผ ์›น ๋ฐ์ดํ„ฐ(JSON) ๋ฐ˜ํ™˜Spring MVC์—์„œ Controller๋Š” ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ ๋’ค ,๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ด๋•Œ ๋ฐ˜ํ™˜ ํƒ€์ž…์— ๋”ฐ๋ผ DispatcherServlet์€ HTML ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•˜๊ฑฐ๋‚˜, ๋ฐ์ดํ„ฐ๋ฅผ JSON ํ˜•์‹์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋“ฑ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. Spring์— ์œ„์ž„๋˜์–ด Controller ์—์„œ ์ฒ˜๋ฆฌํ•œ ๋ชจ๋“  ์‘๋‹ต์€ Front Controller์—๊ฒŒ ๋ฐ˜ํ™˜ ํƒ€์ž…์„ ๊ณ ๋ คํ•ด ๋ฐ˜ํ™˜Front Controller์ธ DistpatcherServlet์€ ์•ž์„  Controller๊ฐ€ ๋ฐ˜ํ™˜ํ•œ ํƒ€์ž…์— ๋”ฐ๋ผ View ์ƒ์„ฑDispatcherServlet์€ HandlerAdapter์˜ ..
1000_sang
'๐Ÿ’ปDEV-STUDY' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (3 Page)