Dev-Kyuu

๐ŸŒ€Annotation

์–ด๋…ธํ…Œ์ด์…˜์€ ์‚ฌ์ „์ ์œผ๋กœ๋Š” "์ฃผ์„"์ด๋ผ๋Š” ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ์ž๋ฐ” ์ฝ”๋“œ์— @๋ฅผ ์ด์šฉํ•ด ์ฃผ์„์ฒ˜๋Ÿผ ๋‹ฌ์•„ ํŠน์ˆ˜ํ•œ ์˜๋ฏธ๋ฅผ ๋ถ€์—ฌํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

ํ”„๋กœ๊ทธ๋žจ์— ๊ด€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜๊ณ , ์ฝ”๋“œ์— ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์ •ํ˜•ํ™”๋œ ๋ฐฉ๋ฒ•์ด๋‹ค.

 

๐ŸŒ€ SpringBootApplication

Spring Boot๋ฅผ ์ž๋™์œผ๋กœ ์‹คํ–‰์‹œ์ผœ์ฃผ๋Š” ์–ด๋…ธํ…Œ์ด์…˜

 

1) @ComponentScan์„ ํ†ตํ•ด ์ปดํฌ๋„ŒํŠธ๋“ค์„ Bean์œผ๋กœ ๋“ฑ๋กํ•œ๋‹ค

2) @EnableAutoConfiguration์„ ํ†ตํ•ด ๋ฏธ๋ฆฌ ์ •์˜ํ•ด๋‘” ์ž๋ฐ” ์„ค์ •ํŒŒ์ผ๋“ค์„ Bean์œผ๋กœ ๋“ฑ๋กํ•œ๋‹ค.

 

* Spring Bean์ด๋ž€

: Spring IOC ์ปจํ…Œ์ด๋„ˆ์— ์˜ํ•ด ์ƒ์„ฑ๋˜๊ณ , ๊ด€๋ฆฌ๋˜๋Š” ๊ฐ์ฒด ์ž๋ฐ” ๊ฐ์ฒด๋ฅผ Bean ์ด๋ผ๊ณ  ํ•จ

 

@Configuration

: ์Šคํ”„๋ง IOC ์ปจํ…Œ์ด๋„ˆ์—๊ฒŒ ํ•ด๋‹น ํด๋ž˜์Šค๊ฐ€ Bean๊ตฌ์„ฑ Class์ž„์„ ์•Œ๋ ค์ฃผ๋Š” ์–ด๋…ธํ…Œ์ด์…˜

 

@ComponentScan

: @Component, @Service, @Repository, @Controller, @Configuration์ด ๋ถ™์€ ๋นˆ๋“ค์„ ์ฐพ์•„์„œ Context์— ๋“ฑ๋กํ•ด ์ฃผ๋Š” ์–ด๋…ธํ…Œ์ด์…˜

 

๐ŸŒ€ Component

๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์ž‘์„ฑํ•œ Class๋กœ Bean์„ ๋“ฑ๋กํ•˜๊ธฐ ์œ„ํ•œ ์–ด๋…ธํ…Œ์ด์…˜

 

@component ์–ด๋…ธํ…Œ์ด์…˜์€ Controller, Service, DAO ์„ธ ์ข…๋ฅ˜์˜ ํด๋ž˜์Šค์—๋งŒ ์‚ฌ์šฉ์„ ๊ถŒ์žฅ ํ•จ 

: @component ๐Ÿ‘‰ ๊ตฌ์ฒดํ™”  ๐Ÿ‘‰ @Controller, @Service, @Repository

 

@Controller

: Spring MVC์˜ Controller๋กœ ์‚ฌ์šฉ๋˜๋Š” ํด๋ž˜์Šค ์„ ์–ธ์„ ๋‹จ์ˆœํ™” ์‹œ์ผœ์ฃผ๋Š” ์–ด๋…ธํ…Œ์ด์…˜

 

@Service

: ๋น„์ฆˆ๋‹ˆ์Šค๋กœ์ง์ด ๋“ค์–ด๊ฐ€๋Š” Service๋กœ ์‚ฌ์šฉ๋˜๋Š” ํด๋ž˜์Šค์ž„์„ ์„ ์–ธํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜

 

@Repository

: DB์™€ ์ง์ ‘์ ์œผ๋กœ ์—ฐ๋™๋˜๋Š” ์ž‘์—…์„ ํ•˜๋Š” DAOํด๋ž˜์Šค์— ํŠนํ™”๋œ ์–ด๋…ธํ…Œ์ด์…˜

 

๐ŸŒ€RequestMapping 

ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์š”์ฒญ๋ฐ›๋Š” ์ฃผ์†Œ๋ฅผ ํด๋ž˜์Šค์™€ ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ๋Š” ์–ด๋…ธํ…Œ์ด์…˜

 

์•„๋ž˜์˜ ์–ด๋…ธํ…Œ์ด์…˜๋“ค์€ HttpMethods์— ๋งค์นญ๋˜์–ด ์‚ฌ์šฉ๋œ๋‹ค. (Post, Get, Put, Delete, Patch)

@PostMapping

@GetMapping

@PutMapping

@DeleteMapping

@PatchMapping

 

 

๐ŸŒ€RestController 

@Controller + @ResponseBody์˜ ๊ฒฐํ•ฉํ˜•ํƒœ์˜ ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ,

ํ•ด๋‹น ํด๋ž˜์Šค๊ฐ€ ajax ์š”์ฒญ์„ ๋ฐ›์•„ Json/xmlํ˜•ํƒœ๋กœ ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•  ๋•Œ ์‚ฌ์šฉ

 

*) @Controller์™€์˜ ์ฐจ์ด 

- ๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ Http Response Body ์ƒ์„ฑ ๋ฐฉ์‹์˜ ์ฐจ์ด์ž„

:  @RestController(์ฃผ์šฉ๋„ ๋ฐ์ดํ„ฐ ๋ฆฌํ„ด)๋Š”, ํด๋ž˜์Šค ๋ฆฌํ„ด ํƒ€์ž…์ด String์ด๋ฉด ๋ฌธ์ž์—ด ๋ฐ์ดํ„ฐ ์˜๋ฏธ 

:  @Controller(์ฃผ์šฉ๋„ View๋ฆฌํ„ด)๋Š”, ํด๋ž˜์Šค ๋ฆฌํ„ดํƒ€์ž…์ด String์ด๋ฉด ๋ฆฌํ„ด๊ฐ’์ด jsp ํŒŒ์ผ๋ช…์„ ์˜๋ฏธํ•จ

๐Ÿ ์‹คํ–‰ํ๋ฆ„
@Controller
Client -> Request -> Dispatcher Servlet -> Handler Mapping -> Controller -> View -> Dispatcher Servlet -> Response -> Client 

@ResponseBody
Client -> Request -> Dispatcher Servlet -> Handler Mapping -> Controller (ResponseBody) -> Response -> Client 

@RestController
Client -> HTTP Request -> Dispatcher Servlet -> Handler Mapping -> RestController (์ž๋™ ResponseBody ์ถ”๊ฐ€)-> HTTP Response -> Client

 

๐ŸŒ€ResponseBody / RequestBody

json ๋ฌธ๋ฒ• ๊ตฌ์กฐ์˜ ํฌ๋งท์œผ๋กœ ์ „์†ก๋˜์–ด์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚ด๋ณด๋‚ด๊ณ , ๊ฐ€์ ธ์˜ฌ๋•Œ ์‚ฌ์šฉํ•จ

 

@ResponseBody

: ์ž๋ฐ” ๊ฐ์ฒด๋ฅผ HTTP ์š”์ฒญ์˜ Body ๋‚ด์šฉ์œผ๋กœ ๋ณ€ํ™˜/๋งคํ•‘ํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜

 

@RequestBody 

: HTTP ์š”์ฒญ์˜ body ๋‚ด์šฉ์„ ์ „๋‹ฌ๋ฐ›์•„ ์ž๋ฐ” ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜/๋งคํ•‘ํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜

 

๐ŸŒ€PathVariable

URL ๊ฒฝ๋กœ์ฃผ์†Œ์— ์‚ฌ์šฉํ•˜๋Š” ๊ฐ’์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ์–ด๋…ธํ…Œ์ด์…˜(RESTful)

: @RequestMapping URL์ •์˜ ๋ถ€๋ถ„๊ณผ Method๋‚ด์˜ Parameter๋ถ€๋ถ„์— ์ •์˜๋ฅผ ํ•˜์—ฌ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅ

 

์˜ˆ )

RequestParam : http://localhost:8080/?id=1

PathVariable : http://localhost:8080/1

profile

Dev-Kyuu

@kyuu_ng

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!