๐Ÿ“˜ Programming/Spring

[Spring Framework] 3. ์–ด๋…ธํ…Œ์ด์…˜(Annotation) ๊ธฐ๋ฐ˜์˜ ์˜์กด์„ฑ ์ฃผ์ž…(DI) ๋ฐฉ๋ฒ• ๋ฐ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ (4)

ํ•œ์ฝ”๋”ฉ 2021. 8. 7. 23:01
728x90
728x90

ํ•™์Šต ๋ชฉํ‘œ

1. '์˜์กด์„ฑ ์ฃผ์ž…' ๊ธฐ๋ณธ ๊ฐœ๋… ์ดํ•ด
2. ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ์™€ ApplicationContext ์ดํ•ด
3-1. XML ํŒŒ์ผ์„ ์ด์šฉํ•œ ์˜์กด์„ฑ ์ฃผ์ž…(DI) ์„ค์ • ๋ฐฉ๋ฒ•
3-2. Annotation์„ ์ด์šฉํ•œ ์˜์กด์„ฑ ์ฃผ์ž…(DI) ์„ค์ • ๋ฐฉ๋ฒ•
3-3. Java๋ฅผ ์ด์šฉํ•œ ์˜์กด์„ฑ ์ฃผ์ž…(DI) ์„ค์ • ๋ฐฉ๋ฒ•
4. Bean ๊ฐ์ฒด์˜ Scope์™€ LifeCycle ์ดํ•ด

Annotation ๊ธฐ๋ฐ˜ DI ๊ตฌ์„ฑ

์–ด๋…ธํ…Œ์ด์…˜ (Annotation)

  • ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ XML ๋“ฑ์˜ ๋ฌธ์„œ์— ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์†Œ์Šค์ฝ”๋“œ์— @~์˜ ํ˜•ํƒœ๋กœ ํ‘œํ˜„
  • ํด๋ž˜์Šค, ๋ฉ”์†Œ๋“œ ,ํ•„๋“œ์˜ ์„ ์–ธ๋ถ€์— ํ‘œํ˜„ํ•˜์—ฌ ํŠน์ • ๊ธฐ๋Šฅ์ด ์ ์šฉ๋˜์—ˆ์Œ์„ ์•Œ๋ฆผ
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ทœ๋ชจ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก XML ์„ค์ •์ด ๋ณต์žกํ•ด ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ๊ฐœ์„ 

์ฃผ์š” ์–ด๋…ธํ…Œ์ด์…˜

  1. @Autowired (@Inject, @Resource )
    • ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋นˆ๊ณผ ๋‹ค๋ฅธ ๋นˆ๊ณผ์˜ ์˜์กด์„ฑ์„ ์ž๋™์œผ๋กœ ์—ฐ๊ฒฐ
    • ์ธ์Šคํ„ด์ˆ˜ ๋ณ€์ˆ˜ ์•ž์— ์‚ฌ์šฉ
    • context:annotation-config/ ์„ค์ •์ด๋‚˜, context:component-scan />์ด ์„ค์ •์ด ํ•„์š”
      • @Autowired , @Resource, @Required ๋ฅผ ์ด์šฉํ•  ๋•Œ ์„ ์–ธ
      • XML ํŒŒ์ผ์— ์ด๋ฏธ ๋“ฑ๋ก๋œ ๋นˆ๋“ค์˜ ์–ด๋…ธํ…Œ์ด์…˜ ๊ธฐ๋Šฅ์„ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์„ ์–ธ
      • ๋นˆ์„ ๋“ฑ๋กํ•˜๊ธฐ ์œ„ํ•œ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ X
  2. @Component ( @Named )
    • ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์˜์กด์„ฑ ์ฃผ์ž…์„ ์œ„ํ•œ ์ธ์Šคํ„ด์Šค๋ฅผ ์„ค์ •
    • ํด๋ž˜์Šค ์„ ์–ธ ์•ž์— ์‚ฌ์šฉ
    • <context:component-scan base-package=“ ํŒจํ‚ค์ง€ ์ด๋ฆ„ "/> ์„ ์–ธ์€ @Component๊ฐ€ ๋ถ™์€ ํด๋ž˜์Šค๋ฅผ ์ž๋™์œผ๋กœ ๋นˆ์œผ๋กœ ๋“ฑ๋ก 

ํ™•์žฅ ์–ด๋…ธํ…Œ์ด์…˜

Bean ์ •์˜ ํŒŒ์ผ์˜ ์ฃผ์š” ์Šคํ‚ค๋งˆ (ApplicationContext.xml)

728x90
๋ฐ˜์‘ํ˜•