07. Spring DI

CHOISUJINยท2023๋…„ 5์›” 3์ผ
0
post-thumbnail

โ˜‘๏ธ Spring Annotation ์ข…๋ฅ˜

๐Ÿ“ Bean ๋“ฑ๋ก ์‹œ ์‚ฌ์šฉ
@Component : ๊ฐ์ฒด(์ปดํฌ๋„ŒํŠธ)๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ผ๋ฐ˜์ ์ธ ํƒ€์ž…์œผ๋กœ <\bean> ํƒœ๊ทธ์™€ ๋™์ผํ•œ ์—ญํ• 
@Repository : ํผ์‹œ์Šคํ„ด์Šค(persistence) ๋ ˆ์ด์–ด, ์˜์†์„ฑ์„ ๊ฐ€์ง€๋Š” ์†์„ฑ(ํŒŒ์ผ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)๋ฅผ ๊ฐ€์ง„ ํด๋ž˜์Šค
@Service : ์„œ๋น„์Šค ๋ ˆ์ด์–ด, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ฐ€์ง„ ํด๋ž˜์Šค
@Controller : ํ”„๋ฆฌ์  ํ…Œ์ด์…˜ ๋ ˆ์ด์–ด, ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ View์—์„œ ์ „๋‹ฌ๋œ ์›น ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•˜๋Š” ํด๋ž˜์Šค

=> @Repository, @Service, @Controller๋Š” ํŠน์ •ํ•œ ๊ฐ์ฒด์˜ ์—ญํ• ์— ๋Œ€ํ•œ @Controller์˜ ๊ตฌ์ฒดํ™” ํ˜•ํƒœ!

๐Ÿ“ ์˜์กด์„ฑ ์ฃผ์ž… ์‹œ ์‚ฌ์šฉ
@Autowired

  • ์ •๋ฐ€ํ•œ ์˜์กด ๊ด€๊ณ„ ์ฃผ์ž…(DI)์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์— ์œ ์šฉํ•˜๋‹ค.
  • @Autowired๋Š” ํ•„๋“œ ๋ณ€์ˆ˜, setter ๋ฉ”์†Œ๋“œ, ์ƒ์„ฑ์ž, ์ผ๋ฐ˜ ๋ฉ”์†Œ๋“œ์— ์ ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์˜์กดํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ์ฃผ์ž…ํ•  ๋•Œ ์ฃผ๋กœ Type์„ ์ด์šฉํ•˜๊ฒŒ ๋œ๋‹ค.
  • @Autowired๋Š” <\property>, <\constructor-arg> ํƒœ๊ทธ์™€ ๋™์ผํ•œ ์—ญํ• ์„ ํ•œ๋‹ค.
  • @Qualifier : @Autowired์™€ ํ•จ๊ป˜ ์“ฐ์ด๋ฉฐ, ํ•œ ํ”„๋กœ์ ํŠธ ๋‚ด์— @Autowired๋กœ ์˜์กด์„ฑ์„
    ์ฃผ์ž…ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ์žˆ์„ ๊ฒฝ์šฐ, @Qualifier(โ€œnameโ€)๋ฅผ ํ†ตํ•ด ์›ํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ์ง€์ •ํ•˜์—ฌ ์ฃผ์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค.

@Resource

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํ•„์š”๋กœ ํ•˜๋Š” ์ž์›์„ ์ž๋™ ์—ฐ๊ฒฐํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.
  • @Resource๋Š” ํ”„๋กœํผํ‹ฐ, setter ๋ฉ”์†Œ๋“œ์— ์ ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์˜์กดํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ์ฃผ์ž…ํ•  ๋•Œ ์ฃผ๋กœ Name์„ ์ด์šฉํ•˜๊ฒŒ ๋œ๋‹ค.

@Value

  • ๋‹จ์ˆœํ•œ ๊ฐ’์„ ์ฃผ์ž…ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜
  • @Value('Spring')์€ <property ... value='Spring'/>๊ณผ ๋™์ผํ•œ ์—ญํ• 

@Autowired์™€ @Resource ์–ด๋…ธํ…Œ์ด์…˜

  • ๊ณตํ†ต์  : @Component๋กœ ์˜์กด๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•œ ๊ฐ์ฒด๋กœ๋ถ€ํ„ฐ ์˜์กด ๊ด€๊ณ„๋ฅผ ์ž๋™์œผ๋กœ ์ฃผ์ž…
  • ์ฐจ์ด์  : @Autowired๋Š” ํƒ€์ž…์œผ๋กœ, @Resource๋Š” ์ด๋ฆ„์œผ๋กœ ์—ฐ๊ฒฐ
profile
๋งค์ผ๋งค์ผ ๋จธ๋ฆฌ ํ„ฐ์ง€๋Š” ์ค‘ แ•™(โ€ขฬ€โ€ธโ€ขฬโ€ถ)แ•—

0๊ฐœ์˜ ๋Œ“๊ธ€