๐Ÿซ˜ ๋นˆ(Bean)์ด๋ž€?

โœ… ํ•œ ์ค„ ์ •์˜

๋นˆ(Bean)์€ Spring์ด ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ new ํ‚ค์›Œ๋“œ๋กœ ๋งŒ๋“ค์ง€ ์•Š๊ณ , ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ(Spring Container)๊ฐ€ ์•Œ์•„์„œ ์ƒ์„ฑํ•˜๊ณ , ํ•„์š”ํ•œ ๊ณณ์— ๋„ฃ์–ด์ฃผ๋ฉฐ, ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.


๐Ÿญ ์‹ค์ƒํ™œ ๋น„์œ : ์ปคํ”ผ ๋จธ์‹  ๊ณต์žฅ


๐Ÿงฉ ๋นˆ์˜ ์ฃผ์š” ํŠน์ง• ์ •๋ฆฌ

ํ•ญ๋ชฉ ์„ค๋ช…
์ƒ์„ฑ ์ฃผ์ฒด ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹Œ ์Šคํ”„๋ง ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ƒ์„ฑ
๊ด€๋ฆฌ ๋ฒ”์œ„ ์ƒ์„ฑ โ†’ ์˜์กด์„ฑ ์ฃผ์ž… โ†’ ์ดˆ๊ธฐํ™” โ†’ ์‚ฌ์šฉ โ†’ ์†Œ๋ฉธ
๊ธฐ๋ณธ ์ด๋ฆ„ ํด๋ž˜์Šค๋ช…์„ camelCase๋กœ ๋ณ€ํ™˜ํ•œ ์ด๋ฆ„ (ex: CoffeeMachine โ†’ coffeeMachine)
์ด๋ฆ„ ์ง€์ • @Component("myBean")์ฒ˜๋Ÿผ ์ด๋ฆ„ ์ง€์ • ๊ฐ€๋Šฅ
์ด๋ฆ„ ์ถฉ๋Œ ๊ฐ™์€ ์ด๋ฆ„์˜ ๋นˆ์ด 2๊ฐœ ๋“ฑ๋ก๋˜๋ฉด ์—๋Ÿฌ ๋ฐœ์ƒ
ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• @Primary๋กœ ์šฐ์„ ์ˆœ์œ„ ์ง€์ • or @Qualifier("beanName")์œผ๋กœ ํŠน์ • ๋นˆ ์ง€์ •

๐Ÿค– ์˜์กด์„ฑ ์ฃผ์ž…(Dependency Injection, DI)

DI๋Š” ๋นˆ์„ ํ•„์š”๋กœ ํ•˜๋Š” ๊ณณ์— ์ž๋™์œผ๋กœ ์ฃผ์ž…ํ•ด์ฃผ๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.

์ง์ ‘ new CoffeeMachine()์ฒ˜๋Ÿผ ๋งŒ๋“ค ํ•„์š” ์—†์ด, ์Šคํ”„๋ง์ด ๋Œ€์‹  ๋งŒ๋“ค์–ด์„œ ๋„ฃ์–ด์ค๋‹ˆ๋‹ค.

DI ๋ฐฉ๋ฒ• 3๊ฐ€์ง€

๋ฐฉ๋ฒ• ์„ค๋ช… ์‚ฌ์šฉ ์˜ˆ์‹œ
ํ•„๋“œ ์ฃผ์ž… @Autowired๋ฅผ ํ•„๋“œ์— ์‚ฌ์šฉ ๊ฐ„๋‹จํ•˜์ง€๋งŒ ํ…Œ์ŠคํŠธ ์–ด๋ ค์›€
์ƒ์„ฑ์ž ์ฃผ์ž… ์ƒ์„ฑ์ž ๋งค๊ฐœ๋ณ€์ˆ˜์— @Autowired ๊ฐ€์žฅ ์ถ”์ฒœ๋˜๋Š” ๋ฐฉ์‹
Setter ์ฃผ์ž… Setter ๋ฉ”์„œ๋“œ์— @Autowired ์„ ํƒ์  ์ฃผ์ž…์— ์ ํ•ฉ

๐Ÿ•ฐ๏ธ ๋นˆ์˜ ์ƒ๋ช…์ฃผ๊ธฐ