[SpringBoot] π‘ @Annotation? μ΄λ 무μμΈκ°
π @Annotation μ΄λ?
μ¬μ μμΌλ‘λ λ¨μν μ£Όμ
μ΄λ λ»μ΄λ€.
νμ§λ§ Annotation
μ λ¨μν μ£Όμμ κΈ°λ₯μ΄ μλλΌ, μλ° νλ‘κ·Έλλ° μΈμ΄μμ μμ€ μ½λμ μΆκ°νμ¬ μ»΄νμΌλ¬λ λ°νμμμ μ¬μ©λ μ μλ λ©νλ°μ΄ν°μ ννλ₯Ό κ°μ§ κ²μ΄λ€.
μ΄λ
Έν
μ΄μ
μ μ»΄νμΌλ¬λ λ°νμμμ μ¬μ©λλ μ 보λ₯Ό μ 곡νκΈ° λλ¬Έμ, μ½λμ κ°λ
μ±κ³Ό μ μ§λ³΄μμ±μ λμ¬μ£Όλ μν μ νλ€.
Spring
μμλ ν΄λΉ Annotation
μ λ³΄κ³ Springμ Bean
μΌλ‘ μΆκ°νλ€.
π@Override
μ΄λ
Έν
μ΄μ
μ @ κΈ°νΈλ₯Ό μ¬μ©νμ¬ μμ±νλ©°, ν΄λμ€, λ©μλ, λ³μ λ± λ€μν μμμ μ μ©ν μ μλ€.
@Override
Annotation
μ λ©μλκ° μμλ°λ κ³Όμ μμ μμ ν΄λμ€λ μΈν°νμ΄μ€μμ μ μλ λ©μλλ₯Ό μ¬μ μν κ²μμ λνλ΄λ©°, μ»΄νμΌλ¬κ° μ΄λ₯Ό νμΈνμ¬ μ€λ²λΌμ΄λ©μ΄ μ λλ‘ λμλμ§ κ²μ¬ν μ μμ΅λλ€.
π @Controller
@Controller
λ MVC λͺ¨λΈμμ C μ ν΄λΉνλ©°, μ£Όλ‘ μ¬μ©μμ μμ²μ μ²λ¦¬ν ν, μ§μ λ λ·°μ λͺ¨λΈ κ°μ²΄λ₯Ό λ겨주λ μν μ νλ€.
ν΄λμ€ μμ @Controller
λ₯Ό μ μΈνλ―λ‘μ, Spring FrameWork
μ ν΄λΉ ν΄λμ€κ° Controller
μμ μλ €μ€λ€.
μ΄λ₯Ό DispatherServlet
μ λ°ννλ€.
π @RestController
@RestController
λ Controller
μ ResponseBody
κ° μΆκ°λ κ²μ΄λ€.
μ΄λ μΌλ°μ μΌλ‘ Json
μ ννλ‘ κ°μ²΄ λ°μ΄ν°λ₯Ό λ°ννλ€.
Rest API
λ₯Ό λ§λ€λ μ£Όλ‘ μ¬μ©λλ©°, κ°μ²΄λ₯Ό ResponseEntity
λ‘ κ°μΈμ λ°ννλ€.
π @RequestMapping
Http
μ λͺ¨λ μμ²μ λ°λ μ΄λ
Έν
μ΄μ
μ΄λ€.
νμ§λ§ λ€λ₯Έ μ¬λ¬κ°μ§ μμ²μ λ°κΈ° μν΄μλ Annotation
μ λ³λ μ€μ μ΄ νμνλ€.
μΌλ°μ μΌλ‘ URL
μ ν΅ν΄ λ°μ΄ν°λ₯Ό 보λΌλ, λ¨μν HTTP
μ κ°μ μ£Όμλ‘ λ³΄μ¬μ§λ μ λ³΄λ§ λ³΄λ΄μ§λ κ²μ΄ μλλΌ, κ·Έ μ£Όμλ₯Ό ν΅ν΄μ Body, Header, Param λ±λ±μ μ 보λ€λ κ°μ΄ 보λ΄μ§κ² λλ€.
νμ§λ§, μ΄λ κ°λ°μ λꡬ κ°μ ν΄λ‘ λ°μ΄ν°λ₯Ό μ λΆ λ³Ό μ μμΌλ―λ‘, 보μκ³Όλ μλ¬΄λ° κ΄λ ¨μ΄ μλ€.
νμ§λ§ 4.3 μ΄μμ μ€νλ§λΆνΈμμλ λμ΄μ @RequestMapping
μ μ¬μ©νμ§ μλλ€.
λ€μκ³Ό κ°μ΄ κ° HTTP λ©μλμ λ§λ μ΄λ
Έν
μ΄μ
μ μ¬μ©νλ€.
- @GetMapping
- @PostMapping
- @PutMapping
- @DeleteMapping
μλλ HTTP
μ λ΄μμ 보λΌμ μλ μ¬λ¬κ°μ§ μ 보λ€μ΄λ€.
π @RequestBody, @ResponseBody
ν΄λΌμ΄μΈνΈμμ μλ²μ 보λ΄λ λ©μΈμ§λ₯Ό request λΌκ³ νκ³ , μλ²μμ ν΄λΌμ΄μΈνΈμ 보λ΄λ λ©μΈμ§λ₯Ό response λ©μΈμ§λΌκ³ νλ€.
μ΄λ¬ν ν΅μ μ ν λ, λ³Έλ¬Έμ λ°μ΄ν°λ₯Ό λ΄μμ 보λ΄μΌνλλ° μ΄ λ³Έλ¬Έμ΄ Bodyμ΄λ€.
μμ²μ ν λλ @RequestBody, μλ΅μ ν λλ** @ResponseBody**μ λ°μ΄ν°λ₯Ό λ΄μμ 보λ΄μΌνλ€.
π @RequestHeader
μμμ λ§νλ―μ΄ HTTP
μλ μ¬λ¬κ°μ§ μ 보λ€μ λ΄μμ λ³΄λΌ μ μλ€.
μ΄λ, header
μ μ 보λ κ°μ΄ 보λ΄λλ° μ΄λ header
μ μνλ λ°μ΄ν°λ₯Ό μΆμΆν΄ λ΄λ Annotation
μ΄λ€.
π@JsonAutoDetect
Jackson
λΌμ΄λΈλ¬λ¦¬μ λ€μ΄μλ Annotation
μ ν μ’
λ₯λ‘μ¨, λ°μ΄ν°λ₯Ό μ μ‘νκ±°λ λ°μλ λ¨μν text/html
κ°μ λ¬Έμμ΄μ΄ μλ JSON
μ΄λ XML
μ λ°μ΄ν° ννλ‘ λ³΄λ΄κ³ μΆμ λ, λ°μ΄ν° ꡬ쑰λ₯Ό μ§λ ¬ν μ²λ¦¬ ν΄μ£Όλ λΌμ΄λΈλ¬λ¦¬μ΄λ€.
μ§λ ¬νμ μμ§λ ¬νλ?
- μ§λ ¬ν: κ°μ²΄λ₯Ό μ μ‘κ°λ₯ν ννλ‘ λ§μμ£Όλ κ²
- μμ§λ ¬ν: κ·Έ λ°μ΄ν°λ₯Ό λ€μ μλ° κ°μ²΄λ‘ λ³νν΄μ£Όλ κ²
κ°μΈ κ³΅λΆ κΈ°λ‘μ© λΈλ‘κ·Έμ
λλ€.
ν리거λ μ€λ₯κ° μμ κ²½μ° μ 보ν΄μ£Όμλ©΄ κ°μ¬νκ² μ΅λλ€.π