2021. 11. 9. 14:14ใSpring
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 ๋๋ฅด๋ฉด ์คํ๋๋ค.