๐ป Spring Container (์ปจํ ์ด๋)
์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ์ฒด ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌํ๋ ์ค์ฌ์ ์ธ ์ปดํฌ๋ํธ์ ๋๋ค.
์ปจํ ์ด๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ์ฒด๋ค์ ์์ฑํ๊ณ ,
๊ทธ๋ค ๊ฐ์ ์์กด์ฑ์ ์ค์ ํ๋ฉฐ,
๊ฐ์ฒด์ ์ด๊ธฐํ์ ์ข ๋ฃ ๊ณผ์ ์ ์ฒ๋ฆฌํฉ๋๋ค.
- ์์กด์ฑ ์ฃผ์ (Dependency Injection): ์ปจํ ์ด๋๋ ๊ฐ์ฒด์ ์์กด์ฑ์ ์๋์ผ๋ก ์ฃผ์ ํด์ค๋๋ค. ์ด๋ ๊ฐ์ฒด๊ฐ ์์ ์ด ํ์ํ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ง์ ์์ฑํ๊ฑฐ๋ ๊ด๋ฆฌํ์ง ์๋๋ก ํ์ฌ ์ฝ๋์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ณ , ํ ์คํธ ๊ฐ๋ฅ์ฑ๊ณผ ์ ์ฐ์ฑ์ ๋์ ๋๋ค.
- ๋ผ์ดํ์ฌ์ดํด ๊ด๋ฆฌ: ์ปจํ ์ด๋๋ Bean์ ์์ฑ, ์ด๊ธฐํ, ์๋ฉธ๊น์ง์ ์ ๊ณผ์ ์ ๊ด๋ฆฌํฉ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ์ฒด ๊ด๋ฆฌ์ ๋ํ ๋ถ๋ด์ ์ค์ด๊ณ , ์ผ๊ด๋ ๋ฐฉ์์ผ๋ก ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๐ป Spring Bean (๋น)
Spring Container์ ์ํด ๊ด๋ฆฌ๋๋ ๊ฐ์ฒด๋ฅผ ์๋ฏธํฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก Spring ์ ํ๋ฆฌ์ผ์ด์ ์์ Bean์ ์ปจํ ์ด๋๊ฐ ์์ฑํ๊ณ ์กฐ์ํ๋ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํต๋๋ค
๐ป์ค์ฝํ (Scope)
Bean์ ์ค์ฝํ๋ ๊ฐ์ฒด์ ์์ฑ๊ณผ ์ฌ์ฉ ์ฃผ๊ธฐ๋ฅผ ์ ์ํฉ๋๋ค.
์ฃผ์ ์ค์ฝํ์๋ ์ฑ๊ธํค(Singleton), ํ๋กํ ํ์ (Prototype), ์์ฒญ(Request), ์ธ์ (Session) ๋ฑ์ด ์์ต๋๋ค.
๐ป Bean ์ ๋ฒ์ (Scope)
1) ์ฑ๊ธํค Singleton ๋ฒ์
์คํ๋ง ์ปจํ ์ด๋์๋ ๋์ผํํ์ ์ ๋น ๊ฐ์ฒด๋ ํ๊ฐ๋ง ์์ฑ๋จ.
getBean() ๋ฉ์๋ ํธ์ถ์ ๊ฐ์ฒด๊ฐ ๋ฐํ๋จ
2) ํ๋กํ ํ์ Prototype ๋ฒ์
๊ฐ๋ฐ์๊ฐ ๋ณ๋๋ก ์ค์ ํด์ค์ผํ๋ค.
์คํ๋ง ์ค์ ํ์ผ์์ Bean ๊ฐ์ฒด๋ฅผ ์ ์ํ ๋,
Scope์์ฑ์ ๋ช ์ํด์ฃผ๋ฉด ๋จ.
<bean id="good" class="day01.SpringTest" scope="prototype"/>