Spring Bean ์˜์กด๊ด€๊ณ„, ํ”„๋กœํผํ‹ฐ ๊ฐ’ ์„ค์ •, ํ”„๋กœํผํ‹ฐ ํŒŒ์ผ์„ ์ด์šฉํ•œ ๊ฐ’ ์„ค์ •ํ•˜๊ธฐ

2021. 11. 9. 14:14ใ†Spring

728x90

1. Bean ์˜์กด๊ด€๊ณ„ ์„ค์ •

 

1๏ธโƒฃ Setter Injection 

Setter ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์˜์กด๊ด€๊ณ„๊ฐ€ ์žˆ๋Š” Bean์„ ์ฃผ์ž…ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” <property> ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 

์ด๋•Œ ref ์†์„ฑ์€ Bean ์ด๋ฆ„์„ ์ด์šฉํ•ด ์ฃผ์ž…ํ•  Bean์„ ์ฐพ๊ณ , value ์†์„ฑ์€ ๋‹จ์ˆœ ๊ฐ’ ๋˜๋Š” Bean์ด ์•„๋‹Œ ๊ฐ์ฒด๋ฅผ ์ฃผ์ž…ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. 

Hello ํด๋ž˜์Šค์˜ setter ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด Bean ์ฃผ์ž…ํ•  ๋•Œ property ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. 

์ด๋•Œ setName์€ String์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ˆœ ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๊ธฐ ์œ„ํ•ด value์†์„ฑ์œผ๋กœ ์„ค์ •ํ–ˆ๋‹ค. 

๊ทธ๋ฆฌ๊ณ  setPrinter์€ Printer๋ผ๋Š” Bean์„ ์ฃผ์ž…ํ•ด์ค˜์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ref ์†์„ฑ์œผ๋กœ ์„ค์ •ํ–ˆ๋‹ค. 

 

2๏ธโƒฃ Constructor Injection 

Constructor(์ƒ์„ฑ์ž)๋ฅผ ํ†ตํ•ด ์˜์กด๊ด€๊ณ„๊ฐ€ ์žˆ๋Š” Bean์„ ์ฃผ์ž…ํ•˜๋ ค๋ฉด <constructor-arg> ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 

Constructor ์ฃผ์ž… ๋ฐฉ์‹์€ ์ƒ์„ฑ์ž์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ด์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•œ๋ฒˆ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ๊ฐ์ฒด๋ฅผ ์ฃผ์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค. 

ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์žˆ๋Š” ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ๋ฐ˜๋“œ์‹œ ์ƒ์„ฑํ•ด์•ผํ•œ๋‹ค. 

index๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ƒ์„ฑ์ž ์ฃผ์ž…์„ ์œ„ํ•œ ์„ค์ •์„ ํ•ด์ฃผ๊ฑฐ๋‚˜ ๊ทธ๋ƒฅ name ์†์„ฑ์„ ํ†ตํ•ด ์ง€์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค. 

 

 

2. ํ”„๋กœํผํ‹ฐ ๊ฐ’ ์„ค์ •

 

1๏ธโƒฃ ๋‹จ์ˆœ ๊ฐ’(๋ฌธ์ž์—ด์ด๋‚˜ ์ˆซ์ž) ์ฃผ์ž… (injection)

์•ž์—์„œ๋„ ์ž ๊น ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด Setter๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด Bean์˜ ๋ ˆํผ๋Ÿฐ์Šค๊ฐ€ ์•„๋‹Œ ๋‹จ์ˆœ ๊ฐ’์„ ์ฃผ์ž…ํ•˜๋ ค๊ณ  ํ–ˆ์„ ๋•Œ๋Š” <property> ํƒœ๊ทธ์˜ value ์†์„ฑ์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

2๏ธโƒฃ ์ปฌ๋ ‰์…˜(Collection) ํƒ€์ž…์˜ ๊ฐ’ ์ฃผ์ž… (injection)

Spring์€ List, Map, Set, Properties์™€ ๊ฐ™์€ ์ปฌ๋ ‰์…˜ ํƒ€์ž…์„ XML๋กœ ์ž‘์„ฑํ•ด์„œ ํ”„๋กœํผํ‹ฐ์— ์ฃผ์ž…ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค. 

 

- List์™€ Set ํƒ€์ž… : <list>, <value> ํƒœ๊ทธ ์‚ฌ์šฉ 

 

- Map ํƒ€์ž… : <map> ๊ณผ <entry> ํƒœ๊ทธ ์‚ฌ์šฉ 

 

3๏ธโƒฃ DI ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค ์ˆ˜์ • ํ›„ ์‹คํ–‰

bean id๊ฐ’์ด hello2 getBean ํ˜ธ์ถœ ํ›„ 

getNames().size()๋ฅผ ํ†ตํ•ด list์˜ ํฌ๊ธฐ๊ฐ€ 3์ด ๋งž๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. 

๊ทธ๋ฆฌ๊ณ  list์˜ ๊ฐ’์„ ํ•˜๋‚˜ํ•˜๋‚˜ ์ถœ๋ ฅํ•ด๋ณธ๋‹ค. 

 

3. ํ”„๋กœํผํ‹ฐ ํŒŒ์ผ์„ ์ด์šฉํ•œ ์„ค์ • 

ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ์ž์ฃผ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋Š” ๋‚ด์šฉ์€ propertiesํŒŒ์ผ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ๊น”๋”ํ•˜๋‹ค. 

์˜ˆ๋กœ ์ด bean์˜ value์†์„ฑ์— ์„ค์ •๋œ ๊ฐ’๋“ค์€ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋Š” ๋‚ด์šฉ๋“ค์ด๋‹ค. 

๋”ฐ๋ผ์„œ ์ž์ฃผ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฐ’๋“ค์€ properrties ํŒŒ์ผ์— ๋„ฃ์–ด ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. 

 

๊ทธ๋ฆฌ๊ณ  ํ”„๋กœํผํ‹ฐ ํŒŒ์ผ๋กœ ๋ถ„๋ฆฌํ•œ ์ •๋ณด๋“ค์€ ${} ์„ ์ด์šฉํ•˜์—ฌ ์„ค์ •ํ•œ๋‹ค. 

${} ๊ฐ’์„ ์น˜ํ™˜ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์€ <context:property-placeholder> ํƒœ๊ทธ์— ์˜ํ•ด ์ž๋™์œผ๋กœ ๋“ฑ๋ก๋˜๋Š” PropertyPlaceHolderConfiguer Bean ์ด ๋‹ด๋‹นํ•œ๋‹ค. 

 

1๏ธโƒฃ ํ”„๋กœํผํ‹ฐ ํŒŒ์ผ ์ƒ์„ฑ 

๋‹จ์ˆœํ•˜๊ฒŒ New -> File ๋กœ ์ƒ์„ฑํ•ด์ฃผ๊ณ  ํ‚ค์™€ ๊ฐ’์œผ๋กœ ์œ„์˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

 

 

2๏ธโƒฃ beans.xml์— <context> ์ถ”๊ฐ€ํ•˜๊ธฐ 

beans.xml ํŒŒ์ผ ๋ฐ‘์— Namespaces๋ฅผ ํด๋ฆญํ•œ๋‹ค. 

๊ทธ๋ฆฌ๊ณ  context ์ถ”๊ฐ€ํ•˜๊ณ , ๊ฐ€์žฅ ์ตœ์‹ ๋ฒ„์ „์œผ๋กœ ํด๋ฆญํ•ด์ค€๋‹ค.

 

 

3๏ธโƒฃ Bean ์ƒ์„ฑ 

${} ์„ ์ด์šฉํ•ด์„œ ๋ถ„๋ฆฌํ–ˆ๋˜ ์ •๋ณด๋ฅผ ์„ค์ •ํ•ด์ค€๋‹ค. 

 

4๏ธโƒฃ ์‹คํ–‰๊ฒฐ๊ณผ 

Bean์—์„œ ์„ค์ •ํ–ˆ๋˜ "hello3"์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๊ณ  ctrl + F11 ๋ˆ„๋ฅด๋ฉด ์‹คํ–‰๋œ๋‹ค. 

 

728x90