์ด ๊ธ์ Spring์ ๊ณต์ ๋ฌธ์๋ฅผ ํด์ํ๊ณ ์ฝ๊ฒ ์ดํดํ๊ธฐ ์ํ ๊ธ์ด๋ฏ๋ก ๊ณต์ ๋ฌธ์์ ๊ฐ์ธ์ ์๊ฐ๊ณผ ์ถ์ธก์ด ํฌํจ๋ ๊ธ์ด๋ ์ด ์ ์ฐธ๊ณ ํ๊ณ ์ฝ์ด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.
์ค๋ ์์๋ณผ ๊ฒ์ Spring-Framework-Core์ BeanFactory์ ๋ํด์ ์์๋ณผ ๊ฒ์ด๋ค.
Interface BeanFactory
Spring ๊ณต์ ๋ฌธ์์์๋ BeanFactory
์ธํฐํ์ด์ค๋ฅผ Spring ์ปจํ
์ด๋์ ์ ๊ทผํ๊ธฐ ์ํ Root ์ธํฐํ์ด์ค๋ผ๊ณ ์ ์ํ๋ค.
์ด ์ธํฐํ์ด์ค๋ ๊ฐ๊ฐ String ์ด๋ฆ์ผ๋ก ๊ณ ์ ํ๊ฒ ์๋ณ๋๋ ์ฌ๋ฌ Bean ์ ์๋ฅผ ๋ณด์ ํ๋ ์ค๋ธ์ ํธ์ ์ํด ๊ตฌํ๋ฉ๋๋ค. ๋น ์ ์์ ๋ฐ๋ผ ํฉํ ๋ฆฌ๋ ํฌํจ ๋ ๊ฐ์ฒด์ ๋ ๋ฆฝ ์ธ์คํด์ค (Prototype ๋์์ธ ํจํด) ๋๋ ๋จ์ผ ๊ณต์ ์ธ์คํด์ค (์ธ์คํด์ค๊ฐ ๋ฒ์์ ์ฑ๊ธ ํค ์ธ Singleton ๋์์ธ ํจํด์ ์ฐ์ํ ๋์)๋ฅผ ๋ฐํํฉ๋๋ค. ๊ณต์ฅ). ๋ฆฌํด๋๋ ์ธ์คํด์ค ์ ํ์ Bean ํฉํ ๋ฆฌ ๊ตฌ์ฑ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. API๋ ๋์ผํฉ๋๋ค. Spring 2.0๋ถํฐ๋ ๊ตฌ์ฒด์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ปจํ ์คํธ (์ : ์น ํ๊ฒฝ์ "request"๋ฐ "session"๋ฒ์)์ ๋ฐ๋ผ ์ถ๊ฐ ๋ฒ์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ฒฐ๋ก ์ BeanFactory๋ Singleton ํจํด์ ๋ฐํํ๋ Spring์ ์ปจํ ์ด๋ ์ด๋ค.
์ด๋ฐ BeanFactory๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์ ๋ ์ง์คํธ๋ฆฌ ์ญํ ์ ํ๋ค.
๋ ์๋๋ฅผ ์ฝ์ด๋ณด๋ฉด,
์ผ๋ฐ์ ์ผ๋ก BeanFactory ์กฐํ์ ๊ฐ์ "ํ (pull)"๊ตฌ์ฑ ํ์์ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค setter ๋๋ ์์ฑ์๋ฅผ ํตํด ์์ฉ ํ๋ก๊ทธ๋จ ๊ฐ์ฒด๋ฅผ ๊ตฌ์ฑํ๋ ค๋ฉด ์ข
์์ฑ ์ฃผ์
( "ํธ์"๊ตฌ์ฑ)์ ์์กดํ๋ ๊ฒ์ด ์ข์ต๋๋ค. Spring์ Dependency Injection ๊ธฐ๋ฅ์์ด BeanFactory ์ธํฐํ์ด์ค์ ํ์ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํ๋ฉ๋๋ค
์ด๋ DL(Dependency Lookup)๋ณด๋ค๋ DI(Dependency Injection)์ ๊ธฐ๋ฅ์ ์ํํ๋ ๊ฒ์ด ๋์ฑ ์ข๋ค๊ณ ํ๋ค.
Interface BeanFactory ์ Method
๋ค์ํ๊ฒ BeanFactory์ ๋ฉ์๋๊ฐ ์กด์ฌํ๋๋ฐ, ์ฐ๋ฆฌ๋ ๊ฐ๋จํ IOC ์ปจํ ์ด๋๋ฅผ ๊ตฌํํ๊ธฐ ์ํด์ ๋ค์๊ณผ ๊ฐ์ ๊ฒ๋ค
๋๊ธ