์ž๋ฐ”๋กœ ์ฝ”๋“œ๋ฅผ ์งœ๋‹ค๋ณด๋ฉด @override๋ฅผ ๋งŽ์ด ๋ณด๊ฒŒ ๋œ๋‹ค. ๋ณผ ๋•Œ๋งˆ๋‹ค ์ƒ๊ฐํ–ˆ๋˜ ๊ฒƒ์ธ๋ฐ, overriding๋˜ ์žˆ๋Š”๊ฑฐ ๋ช…์‹œ ์•ˆํ•ด์ค˜๋„ ๋‹ค ์•„๋Š”๋ฐ ์™œ ๊ตณ์ด ์จ๋†“์•˜์„๊นŒ? ๋ผ๋Š” ์˜๋ฌธ์ด์—ˆ๋‹ค. 

๊ทธ๋Ÿฌ๋‹ค, ์ด๋ฒˆ์— bean์— ๋Œ€ํ•ด ๋ฐฐ์šฐ๋ฉด์„œ @(์–ด๋…ธํ…Œ์ด์…˜) ์„ ๋งŽ์ด ๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด ํฌ์ŠคํŒ…์—์„œ๋Š” ์–ด๋…ธํ…Œ์ด์…˜์ด ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณธ๋‹ค. 


Annotation

= ์ปดํŒŒ์ผ๋Ÿฌ์™€ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ถ”๊ฐ€์ ์ธ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ

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

 

<์‚ฌ์šฉ ์ด์œ >

  1. ์ปดํŒŒ์ผ๋Ÿฌ ์ฒดํฌ
    ์˜ˆ๋ฅผ ๋“ค์–ด, @Override๋ฅผ ๋ถ™์ด๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํ•ด๋‹น ๋ฉ”์„œ๋“œ๊ฐ€ ์ƒ์œ„ ํด๋ž˜์Šค๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•˜๊ณ  ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌ
    ์˜คํƒ€๋‚˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜๊ฐ€ ํ‹€๋ฆด ์‹œ. ์ปดํŒŒ์ผ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ
  2. ๊ฐ€๋…์„ฑ ๋ฐ ๋ฌธ์„œํ™”
    ์ฝ”๋“œ์˜ ์˜๋„๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ํ‘œํ˜„ํ•˜์—ฌ ์—ญํ• ์„ ๋ฐ”๋กœ ์•Œ ์ˆ˜ ์žˆ์Œ
    → ์œ ์ง€๋ณด์ˆ˜์™€ ํ˜‘์—…์— ๋„์›€์ด ๋จ
  3. ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ ์ œ๊ณต
    Spring, JPA ๋“ฑ ๋‹ค์–‘ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ๋Š” ์–ด๋…ธํ…Œ์ด์…˜์„ ํ™œ์šฉํ•˜์—ฌ ๋Ÿฐํƒ€์ž„์— ๊ฐ์ฒด๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ํŠน์ • ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•จ

    → ์ฝ”๋“œ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์œ ์ง€ & ๋ณต์žกํ•œ ์„ค์ •์ด๋‚˜ ๋™์ž‘์„ ์ž๋™ํ™”

 

์–ด๋…ธํ…Œ์ด์…˜์—๋Š” ๊ต‰์žฅํžˆ ๋งŽ์€ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค. ๊ทธ ์ค‘ ์ž˜ ์“ฐ์ด๋Š” ๋ช‡ ๊ฐ€์ง€๋ฅผ ์•Œ์•„๋ณด์ž.

@override

๋ฉ”์„œ๋“œ๊ฐ€ ์Šˆํผํด๋ž˜์Šค(๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค)์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์žฌ์ •์˜(override)ํ•˜๊ณ  ์žˆ์Œ์„ ์ปดํŒŒ์ผ๋Ÿฌ์— ์•Œ๋ ค์คŒ


@SpringBootApplication

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

Bean์„ ์ •์˜ํ•˜๊ณ  ๋“ฑ๋กํ•˜๋Š” 3๊ฐ€์ง€ ์–ด๋…ธํ…Œ์ด์…˜์„ ํฌํ•จํ•œ๋‹ค.

  • @Configuration: ํ•ด๋‹น ํด๋ž˜์Šค๊ฐ€ Spring ์„ค์ • ํŒŒ์ผ์ž„์„ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค.
  • @EnableAutoConfiguration: ๋ฏธ๋ฆฌ ์ •์˜๋œ ์„ค์ •๋“ค์„ ๋ฐ”ํƒ•์œผ๋กœ ์ž๋™์œผ๋กœ Bean๋“ค์„ ๋“ฑ๋กํ•ด์ค๋‹ˆ๋‹ค.
  • @ComponentScan: ์ง€์ •๋œ ํŒจํ‚ค์ง€(๊ธฐ๋ณธ์ ์œผ๋กœ ํ˜„์žฌ ํด๋ž˜์Šค๊ฐ€ ์œ„์น˜ํ•œ ํŒจํ‚ค์ง€ ๋ฐ ํ•˜์œ„ ํŒจํ‚ค์ง€) ๋‚ด์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ Bean์œผ๋กœ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.
๐ŸŽ€ Spring ์„ค์ • ํŒŒ์ผ
    = Bean์„ ์ •์˜ & ๊ตฌ์„ฑ
    - XML ์„ค์ • ํŒŒ์ผ(๊ตฌ ๋ฐฉ์‹)
       ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์—๊ฒŒ ์–ด๋–ค ๋นˆ๋“ค์„ ์–ด๋–ป๊ฒŒ ์ƒ์„ฑํ•˜๊ณ  ์—ฐ๊ฒฐํ• ์ง€๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ์„ค์ • ๋ฆฌ์†Œ์Šค
    - Java Config(์ตœ์‹  ๋ฐฉ์‹)
       @Configuration๊ณผ ๊ทธ ์•ˆ์˜ @Bean ๋ฉ”์„œ๋“œ๋“ค์„ ์‚ฌ์šฉํ•˜๋ฉด, ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋“ค์ด ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ์ฒด๋“ค์ด bean์œผ๋กœ ๋“ฑ๋ก๋จ 

 

@ComponentScan

์ง์ ‘ ์ž‘์„ฑํ•œ class๋ฅผ bean์œผ๋กœ ๋“ฑ๋ก

→ value๋ฅผ ์ด์šฉํ•ด bean์˜ ์ด๋ฆ„์„ ์ง€์ •

@Bean

๊ฐœ๋ฐœ์ž๊ฐ€ ์ œ์–ด ๋ถˆ๊ฐ€ํ•œ ํด๋ž˜์Šค(ex. ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)๋ฅผ bean์œผ๋กœ ๋“ฑ๋ก

→ name์„ ์ด์šฉํ•ด bean์˜ ์ด๋ฆ„์„ ์ง€์ •


@Controller

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

@RestController

Spring์—์„œ Controller ์ค‘ View๋กœ ์‘๋‹ตํ•˜์ง€ ์•Š๋Š” Controller๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

method์˜ ๋ฐ˜ํ™˜ ๊ฒฐ๊ณผ๋ฅผ JSON ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

⇒ @Controller + @ResponseBody

 

  ๐ŸŽจ @Controller ๐Ÿ’พ @RestController
์—ญํ•  View์™€ API๋ฅผ ๋ชจ๋‘ ์ฒ˜๋ฆฌํ•˜๋Š” ์ปจํŠธ๋กค๋Ÿฌ API ์ „์šฉ ์ปจํŠธ๋กค๋Ÿฌ (๋ฐ์ดํ„ฐ๋งŒ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ, View๋Š” ์ฒ˜๋ฆฌ X)
์‘๋‹ต ํ˜•ํƒœ ๊ธฐ๋ณธ์ ์œผ๋กœ View(HTML ๋“ฑ)๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ, API์ผ ๊ฒฝ์šฐ ๋ณ„๋„๋กœ @ResponseBody ์‚ฌ์šฉ ํ•„์š” ๋ฉ”์„œ๋“œ์˜ ๋ฐ˜ํ™˜ ๊ฐ’์„ JSON์ด๋‚˜ XML ๋“ฑ์œผ๋กœ ์ง์ ‘ HTTP Response์— ๋‹ด์•„ ๋ฐ˜ํ™˜ (์ž๋™ @ResponseBody ์ ์šฉ)
์‚ฌ์šฉ ๋ชฉ์  ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ UI ๋ Œ๋”๋ง๊ณผ API๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๋•Œ RESTful API ๊ฐœ๋ฐœ ์‹œ, View๊ฐ€ ํ•„์š” ์—†๋Š” ๋ฐ์ดํ„ฐ ์‘๋‹ต์— ์‚ฌ์šฉ

 

+ Recent posts