1 minute read

πŸ“˜ @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에 λ‹΄μ•„μ„œ λ³΄λ‚Όμˆ˜ μžˆλŠ” μ—¬λŸ¬κ°€μ§€ 정보듀이닀.

image


πŸ“Œ @RequestBody, @ResponseBody

ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ„œλ²„μ— λ³΄λ‚΄λŠ” 메세지λ₯Ό request 라고 ν•˜κ³ , μ„œλ²„μ—μ„œ ν΄λΌμ΄μ–ΈνŠΈμ— λ³΄λ‚΄λŠ” 메세지λ₯Ό response 메세지라고 ν•œλ‹€.
μ΄λŸ¬ν•œ 톡신을 ν•  λ•Œ, 본문에 데이터λ₯Ό λ‹΄μ•„μ„œ λ³΄λ‚΄μ•Όν•˜λŠ”λ° 이 본문이 Body이닀.
μš”μ²­μ„ ν•  λ•ŒλŠ” @RequestBody, 응닡을 ν•  λ•ŒλŠ”** @ResponseBody**에 데이터λ₯Ό λ‹΄μ•„μ„œ λ³΄λ‚΄μ•Όν•œλ‹€.


πŸ“Œ @RequestHeader

μœ„μ—μ„œ λ§ν–ˆλ“―μ΄ HTTPμ—λŠ” μ—¬λŸ¬κ°€μ§€ 정보듀을 λ‹΄μ•„μ„œ 보낼 수 μžˆλ‹€.
μ΄λ•Œ, header의 정보도 같이 λ³΄λ‚΄λŠ”λ° μ΄λ•Œ header의 μ›ν•˜λŠ” 데이터λ₯Ό μΆ”μΆœν•΄ λ‚΄λŠ” Annotation이닀.


πŸ“Œ@JsonAutoDetect

Jackson λΌμ΄λΈŒλŸ¬λ¦¬μ— λ“€μ–΄μžˆλŠ” Annotation의 ν•œ μ’…λ₯˜λ‘œμ¨, 데이터λ₯Ό μ „μ†‘ν•˜κ±°λ‚˜ 받을떄 λ‹¨μˆœνžˆ text/html 같은 λ¬Έμžμ—΄μ΄ μ•„λ‹Œ JSONμ΄λ‚˜ XML의 데이터 ν˜•νƒœλ‘œ 보내고 싢을 λ•Œ, 데이터 ꡬ쑰λ₯Ό 직렬화 처리 ν•΄μ£ΌλŠ” λΌμ΄λΈŒλŸ¬λ¦¬μ΄λ‹€.

직렬화와 μ—­μ§λ ¬ν™”λž€?

  • 직렬화: 객체λ₯Ό 전솑가λŠ₯ν•œ ν˜•νƒœλ‘œ λ§μ•„μ£ΌλŠ” 것
  • 역직렬화: κ·Έ 데이터λ₯Ό λ‹€μ‹œ μžλ°” 객체둜 λ³€ν™˜ν•΄μ£ΌλŠ” 것



개인 곡뢀 기둝용 λΈ”λ‘œκ·Έμž…λ‹ˆλ‹€.
ν‹€λ¦¬κ±°λ‚˜ 였λ₯˜κ°€ μžˆμ„ 경우 μ œλ³΄ν•΄μ£Όμ‹œλ©΄ κ°μ‚¬ν•˜κ² μŠ΅λ‹ˆλ‹€.😁