Bean Overview
์คํ๋ง IoC ์ปจํ
์ด๋์์ ๊ด๋ฆฌ๋๋ Bean์ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์ฑ ์์๋ฅผ ๋ํ๋ด๋ฉฐ, ์ด Bean์ XML <bean/>
์ ์ ๋๋ ๋ค๋ฅธ ํ์์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑ๋ฉ๋๋ค.
Spring์ ์ด๋ฌํ bean ์ ์๋ฅผ ํตํด BeanDefinition ๊ฐ์ฒด๋ฅผ ๋ด๋ถ์ ์ผ๋ก ์ฌ์ฉํด ๊ฐ bean์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค. ์ด BeanDefinition ๊ฐ์ฒด์๋ ๋ค์๊ณผ ๊ฐ์ ์ฃผ์ ์ ๋ณด๊ฐ ํฌํจ๋ฉ๋๋ค:
ํด๋์ค ์ด๋ฆ: ํด๋น bean์ ๊ตฌํํ๋ ํด๋์ค์ ํจํค์ง-ํฌํจ ์ด๋ฆ.
Bean์ ๋์ ์ค์ : ์ปจํ ์ด๋์์ ํด๋น bean์ ๋์ ๋ฐฉ์์ ์ง์ ํ๋ ์์(์: ๋ฒ์, ๋ผ์ดํ์ฌ์ดํด ์ฝ๋ฐฑ ๋ฑ).
๋ค๋ฅธ Bean์ ๋ํ ์ฐธ์กฐ: ํด๋น bean์ด ์์ ์ ์ํํ๋ ๋ฐ ํ์ํ ๋ค๋ฅธ bean์ ๋ํ ์ฐธ์กฐ(์์กด์ฑ).
๊ธฐํ ๊ตฌ์ฑ ์์: ์์ฑ๋ ๊ฐ์ฒด์ ์ถ๊ฐ ์ค์ (์: ์ปค๋ฅ์ ํ์ ์ฐ๊ฒฐ ์ ์ ํ ๋ฑ).
Bean ์ ์ ์์ฑ
์คํ๋ง์์ ๊ด๋ฆฌํ๋ ๊ฐ BeanDefinition์ ์ฌ๋ฌ ์์ฑ๋ค๋ก ๊ตฌ์ฑ๋ฉ๋๋ค:
์์ฑ | ์ค๋ช |
ํด๋์ค (Class) | Bean์ ๊ตฌํ ํด๋์ค๋ฅผ ์ง์ ํฉ๋๋ค. |
์ด๋ฆ (Name) | Bean์ ๊ณ ์ ์๋ณ์์ ๋๋ค. |
๋ฒ์ (Scope) | Bean์ ๋ผ์ดํ์ฌ์ดํด์ ์ ์ํฉ๋๋ค. (์ฑ๊ธํค, ํ๋กํ ํ์ ๋ฑ) |
์์ฑ์ ์ธ์ | ์์กด์ฑ ์ฃผ์ ์ ์ํ ์์ฑ์ ์ธ์๋ฅผ ์ง์ ํฉ๋๋ค. |
ํ๋กํผํฐ (Properties) | ์์กด์ฑ ์ฃผ์ ์ ์ํ ํ๋กํผํฐ๋ฅผ ์ง์ ํฉ๋๋ค. |
์๋ ์ฐ๊ฒฐ ๋ชจ๋ | ์๋์ผ๋ก ์์กด์ฑ์ ์ฃผ์ ํ๋ ๋ฐฉ์์ ์ง์ ํฉ๋๋ค. |
์ง์ฐ ์ด๊ธฐํ ๋ชจ๋ | ํด๋น bean์ด ์ง์ฐ ์ด๊ธฐํ๋ ์ง๋ฅผ ์ง์ ํฉ๋๋ค. |
์ด๊ธฐํ ๋ฉ์๋ | bean์ ์ด๊ธฐํ ๋ฉ์๋๋ฅผ ์ง์ ํฉ๋๋ค. |
์๋ฉธ ๋ฉ์๋ | bean์ ์๋ฉธ ๋ฉ์๋๋ฅผ ์ง์ ํฉ๋๋ค. |
Bean ๋ฑ๋ก ๋ฐ ๊ด๋ฆฌ
์ผ๋ฐ์ ์ผ๋ก ApplicationContext
๋ ์ฌ์ ์ ์ ์๋ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ bean์ ๊ด๋ฆฌํฉ๋๋ค. ํ์ง๋ง ์ปจํ
์ด๋ ์ธ๋ถ์์ ์์ฑ๋ ๊ฐ์ฒด๋ registerSingleton()
๋ฐ registerBeanDefinition()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์๋์ผ๋ก ๋ฑ๋กํ ์ ์์ต๋๋ค. ๋จ, ์ด๋ฌํ ๊ฐ์ฒด๋ ๋ฉํ๋ฐ์ดํฐ๋ ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ๋ฑ๋ก๋์ด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์๋ ์์ด์ด๋ง์ด๋ ์ปจํ
์ด๋๊ฐ bean์ ๊ด๋ฆฌํ๋๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
Bean ์ด๋ฆ ์ง์
๋ชจ๋ bean์ ๊ณ ์ ํ ์๋ณ์๋ฅผ ๊ฐ์ ธ์ผ ํ๋ฉฐ, XML ๊ธฐ๋ฐ ๋ฉํ๋ฐ์ดํฐ์์ id
๋๋ name
์์ฑ์ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. name
์์ฑ์ ์ฌ๋ฌ ๊ฐ์ ๋ณ์นญ์ ๊ฐ์ง ์ ์์ผ๋ฉฐ, ์คํ์ด์ค, ์ผํ, ์ธ๋ฏธ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถํฉ๋๋ค. ๋ณ์นญ์ bean์ ์ฌ์ฉ์ ๋์ฑ ์ ์ฐํ๊ฒ ๋ง๋ค์ด ์ค๋๋ค.
Bean ์ค๋ฒ๋ผ์ด๋ฉ
bean ์ค๋ฒ๋ผ์ด๋ฉ์ ๋์ผํ ์๋ณ์๋ก ์ฌ๋ฌ bean์ ๋ฑ๋กํ ๋ ๋ฐ์ํฉ๋๋ค. ์ค๋ฒ๋ผ์ด๋ฉ์ ์ง์๋์ง๋ง, ํฅํ ์คํ๋ง ๋ฒ์ ์์๋ ์ด ๊ธฐ๋ฅ์ด ๋ ์ด์ ์ง์๋์ง ์์ ์์ ์
๋๋ค. allowBeanDefinitionOverriding
์ false
๋ก ์ค์ ํ์ฌ ์ค๋ฒ๋ผ์ด๋ฉ์ ๊ธ์งํ ์ ์์ผ๋ฉฐ, ๊ธฐ๋ณธ์ ์ผ๋ก ์ค๋ฒ๋ผ์ด๋ฉ ์ INFO ๋ ๋ฒจ์ ๋ก๊ทธ๊ฐ ๊ธฐ๋ก๋ฉ๋๋ค.
Bean ์ธ์คํด์คํ
Bean ์ ์๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ "๋ ์ํผ"์ ๊ฐ์ผ๋ฉฐ, ์ปจํ
์ด๋๊ฐ getBean()
์ ํธ์ถํ ๋ ์ด ๋ ์ํผ๋ฅผ ๋ฐํ์ผ๋ก bean์ ์์ฑํฉ๋๋ค. XML ๊ธฐ๋ฐ ์ค์ ์์๋ <bean>
ํ๊ทธ์ class
์์ฑ์ผ๋ก bean์ ํด๋์ค๋ฅผ ์ง์ ํฉ๋๋ค.
์์ฑ์ ์ธ์คํด์คํ
์ผ๋ฐ์ ์ผ๋ก ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ์ฌ์ฉํ์ฌ bean์ ์ธ์คํด์คํํ์ง๋ง, ๊ฒฝ์ฐ์ ๋ฐ๋ผ ์์ฑ์ ์ธ์๋ ํ๋กํผํฐ ๊ฐ์ ํตํด ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋
์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋๋ฅผ ์ฌ์ฉํด ๊ฐ์ฒด๋ฅผ ์์ฑํ ์๋ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ factory-method
์์ฑ์ ์ฌ์ฉํด ํฉํ ๋ฆฌ ๋ฉ์๋๋ฅผ ์ง์ ํฉ๋๋ค.
์ธ์คํด์ค ํฉํ ๋ฆฌ ๋ฉ์๋
๊ธฐ์กด์ ๋ฑ๋ก๋ bean์ ์ธ์คํด์ค ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์๋ก์ด bean์ ์์ฑํ ์๋ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ factory-bean
์์ฑ์ ์ฌ์ฉํ์ฌ ํฉํ ๋ฆฌ ๋ฉ์๋๊ฐ ํฌํจ๋ bean์ ์ง์ ํฉ๋๋ค.
Bean์ ๋ฐํ์ ํ์
ํ์ธ
bean์ ๋ฐํ์ ํ์
์ ํ์ธํ๋ ค๋ฉด BeanFactory.getType()
๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ค์ ๊ฐ์ฒด ํ์
์ ํ์ธํ ์ ์์ต๋๋ค.
์ ๋ด์ฉ์ ๋ฐํ์ผ๋ก Spring IoC ์ปจํ ์ด๋๋ ๊ฐ์ฒด ๊ฐ์ ์์กด์ฑ์ ๊ด๋ฆฌํ๊ณ , ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก bean์ ์ ์, ์์ฑ ๋ฐ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
Last updated