Bean definition inheritance
Bean Definition Inheritance(๋น ์ ์ ์์)๋ Spring์์ ๋งค์ฐ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ผ๋ก, ๋ถ๋ชจ Bean ์ ์์์ ๋ง์ ์ค์ ์ ๋ณด๋ฅผ ์์ Bean ์ ์์ ์์ํ ์ ์๋๋ก ํฉ๋๋ค. ์ด๋ฌํ ์์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ์์ฑ์ ์ธ์, ํ๋กํผํฐ ๊ฐ, ์ด๊ธฐํ ๋ฉ์๋, ์ค์ฝํ ๋ฑ์ ์ค์ ์ ๋ถ๋ชจ Bean์ผ๋ก๋ถํฐ ์์๋ฐ๊ณ , ํ์ํ ๊ฒฝ์ฐ ์ผ๋ถ ์ค์ ๋ง ๋ฎ์ด์ฐ๊ฑฐ๋ ์ถ๊ฐํ ์ ์์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ XML ๊ธฐ๋ฐ์ Spring ๊ตฌ์ฑ์์ ํนํ ์ ์ฉํ๋ฉฐ, Bean ์ค์ ์ ํ ํ๋ฆฟ์ฒ๋ผ ์ฌ์ฉํ ์ ์๊ฒ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฝ๋ ์ค๋ณต์ ์ค์ด๊ณ ๊ตฌ์ฑ์ ์ผ๊ด์ฑ์ ์ ์งํ ์ ์์ต๋๋ค.
Bean ์์์ ๊ธฐ๋ณธ ๊ฐ๋
๋ถ๋ชจ Bean ์ ์์๋ ๋ค์๊ณผ ๊ฐ์ ์์ฑ๋ค์ด ํฌํจ๋ ์ ์์ต๋๋ค:
์์ฑ์ ์ธ์
ํ๋กํผํฐ ๊ฐ
์ด๊ธฐํ ๋ฉ์๋ ๋ฐ ์๋ฉธ ๋ฉ์๋
์ค์ฝํ
์ ์ ํฉํ ๋ฆฌ ๋ฉ์๋ ์ด๋ฆ
์์ Bean ์ ์๋ ์ด๋ฌํ ์์ฑ์ ์์๋ฐ์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ํ์ํ ๊ฒฝ์ฐ ์ผ๋ถ ์์ฑ๋ง ์ฌ์ ์ํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์์ Bean ์ ์์ ํน์ง
์์๋ ์์ฑ
์์ Bean ์ ์๋ ๋ถ๋ชจ๋ก๋ถํฐ ์์ฑ์ ์ธ์, ํ๋กํผํฐ ๊ฐ, ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋, ์ค์ฝํ ๋ฑ์ ์์๋ฐ์ต๋๋ค.
์์ Bean์ ์์๋ฐ์ ๊ฐ์ ์ถ๊ฐํ๊ฑฐ๋ ๋ฎ์ด์ธ ์ ์์ต๋๋ค.
๋
๋ฆฝ์ ์ธ ์ค์
์ผ๋ถ ์์ฑ์ ์์ Bean์ด ํญ์ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ์ง๋๋ค. ์๋ฅผ ๋ค์ด,
depends-on
,autowire mode
,dependency check
,singleton
,lazy-init
๋ฑ์ ์ค์ ์ ๋ถ๋ชจ๋ก๋ถํฐ ์์๋์ง ์๊ณ , ์์ ์ ์์๋ง ์ ์ฉ๋ฉ๋๋ค.
๋ถ๋ชจ Bean ์ ์ (์ถ์ ํด๋์ค์ฒ๋ผ ๋์)
์ด
inheritedTestBean
์ ์ถ์ Bean์ผ๋ก ์ค์ ๋์์ผ๋ฉฐ, ๋ค๋ฅธ Bean์ด ์ด ์ ์๋ฅผ ์์ํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค.name
์์ฑ์ "parent"๋ก,age
์์ฑ์ 1๋ก ์ค์ ๋์ด ์์ต๋๋ค.
์์ Bean ์ ์
์ด
inheritsWithDifferentClass
Bean์ ๋ถ๋ชจ์ธinheritedTestBean
์ผ๋ก๋ถํฐ name๊ณผ age ์์ฑ์ ์์๋ฐ์ต๋๋ค.name ์์ฑ์
override
๋ก ๋ฎ์ด์ฐ์์ง๋ง, age๋ ์์๋ ๊ฐ์ธ 1์ ์ฌ์ฉํฉ๋๋ค.๋ํ, ์์ Bean์ ์๋ก์ด ์ด๊ธฐํ ๋ฉ์๋(
init-method="initialize"
)๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
์ถ์ Bean ์ ์
๋ถ๋ชจ Bean ์ ์๊ฐ ์ถ์(abstract)์ผ๋ก ์ค์ ๋๋ฉด, ์ด Bean์ ์์ฒด์ ์ผ๋ก๋ ์ธ์คํด์คํํ ์ ์์ต๋๋ค. ์ด๋ฌํ ์ถ์ Bean์ ์ค์ง ํ ํ๋ฆฟ์ผ๋ก๋ง ์ฌ์ฉ๋๋ฉฐ, ์์ Bean์ด ์ด๋ฅผ ์์ํ์ฌ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์ฌ๊ธฐ์ inheritedTestBeanWithoutClass
๋ ํด๋์ค๊ฐ ๋ช
์๋์ง ์์ ์ถ์ Bean์ผ๋ก, ์ค์ง ํ
ํ๋ฆฟ์ผ๋ก๋ง ์ฌ์ฉ๋ฉ๋๋ค.
abstract ์์ฑ:
๋ถ๋ชจ Bean ์ ์๊ฐ ์ถ์์ ์ผ๋ก ์ค์ ๋์ง ์์ผ๋ฉด, Spring ์ปจํ ์คํธ๋ ์ด Bean์ ์ธ์คํด์คํํ๋ ค๊ณ ์๋ํฉ๋๋ค. ์ถ์ Bean ์ ์๋ **๋ฐ๋์
abstract="true"
**๋ก ์ค์ ํด์ผ ํฉ๋๋ค.์ถ์ Bean์
getBean()
๋ฉ์๋๋ฅผ ํตํด ์ง์ ์ ๊ทผํ๋ ค๊ณ ํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด๋ ํ ํ๋ฆฟ์ผ๋ก๋ง ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
์์ Bean์ ํด๋์ค:
์์ Bean์ ๋ถ๋ชจ Bean์์ ์ ์๋ ํด๋์ค๋ฅผ ์์ํ ์๋ ์๊ณ , ํ์์ ๋ฐ๋ผ ๋ค๋ฅธ ํด๋์ค๋ฅผ ์ ์ํ ์๋ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ์์ ํด๋์ค๋ ๋ถ๋ชจ์์ ์์๋ ํ๋กํผํฐ ๊ฐ๊ณผ ํธํ ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
ApplicationContext์ ์ฑ๊ธํค:
Spring์
ApplicationContext
๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ์ฑ๊ธํค Bean์ ๋ฏธ๋ฆฌ ์ธ์คํด์คํํฉ๋๋ค. ๋ฐ๋ผ์ ํ ํ๋ฆฟ์ผ๋ก๋ง ์ฌ์ฉ๋ ๋ถ๋ชจ Bean์ดabstract="true"
๋ก ์ค์ ๋์ง ์์ผ๋ฉด, Spring์ ์ด๋ฅผ ์ธ์คํด์คํํ๋ ค๊ณ ์๋ํ ์ ์์ต๋๋ค.
Spring์ Bean ์ ์ ์์์ ๋ถ๋ชจ-์์ ๊ด๊ณ๋ก ์ค์ ๋ Bean ์ ์ ๊ฐ์ ์์ฑ ๊ฐ์ ์์ํ๊ณ , ํ์ํ ๊ฒฝ์ฐ ์์ Bean์์ ์ฌ์ ์ํ ์ ์๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ๋๋ค.
์ด๋ฅผ ํตํด ์ฝ๋ ์ค๋ณต์ ์ค์ด๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ค์ ์ ํ ํ๋ฆฟ ๋ฐฉ์์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
abstract
์์ฑ์ ๋ถ๋ชจ Bean์ ํ
ํ๋ฆฟ์ผ๋ก๋ง ์ฌ์ฉํ๊ธฐ ์ํด ์ค์ ํด์ผ ํ๋ฉฐ, ์ด๋ฅผ ํตํด ์์ Bean์์ ์์๋ฐ์ ์ฌ์ฉํฉ๋๋ค
Last updated