๊ฐ๋ฐ์ ๋ฐฐ์ฐ๋ฉด์ ์ธ์ ๊ฐ ๋ถํฐ ๋ฑ์ฅํ๋ ๋จ์ด 'Bean'
์์ฃผ ๋ฑ์ฅํ๋ค๋ณด๋ ์ด๋ ดํ์ด ์๊ณ ์๋ ๊ฐ๋
์ด๋ผ๊ณ ์๊ฐํ์ง๋ง ๊ฐ๋
์ ํ์คํ ์ดํดํ์ง ๋ชปํ๊ณ ๋์ด๊ฐ๋๋ ๋ฑ์ฅํ ๋ ๋ง๋ค ๋์ฒด ์ ๋์ ์ ์ฒด๋ ๋ฌด์์ธ๊ฐ ์ ์ ํผ๋์ค๋ฌ์ ์ง๊ธฐ ์์ํ๋ค. ๊ทธ๋ฆฌํ์ฌ ํ์คํ ์ดํด๋ฅผ ํ๊ธฐ์ํด์ ์ ๋ฆฌํด๋ณด๊ธฐ๋ก ํ๋ค.
bean์ ์คํ๋ง์์๋ง ๋์ค๋์ค ์์๋๋ฐ java beans๋ผ๋ ๋จ์ด๊น์ง ๋ํ๋๋ฒ๋ ธ๋ค.
๋๋ฅ...! ๋ ๋จ์ด๋ ๊ฐ๊ฐ ๋ฌด์์ ๋งํ๋ ๊ฑด์ง ์ดํด๋ณด์!
-> Java Beans๋ java๋ก ์์ฑ๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ํํธ์จ์ด ์ปดํฌ๋ํธ๋ฅผ ์๋ฏธํ๋ค. ์ด๋ ๊ฒ ๋งํ๋ฉด ๋๋ฌด ์ด๋ ต๋ค. ์ฝ๊ฒ ๋งํด์ ํน์ ํํ๋ฅผ ๊ฐ์ง Java ํด๋์ค๋ฅผ ๋งํ๋ค.
Java Beans์ ํน์ง์ ๋ค์๊ณผ ๊ฐ๋ค.
- ์์ฑ(๋ฉค๋ฒ ๋ณ์)์ private์ผ๋ก ์์ฑ
- getter / setter๋ฅผ ์ ๊ณตํ ๊ฒ
- ์์ฑ์๊ฐ ์๊ฑฐ๋ ๋ฐ๋์ ๋งค๊ฐ๋ณ์๊ฐ ์๋(no-argument) ์์ฑ์๊ฐ ์์ ๊ฒ
-DTO๋ VOํด๋์ค๋ฅผ ์๊ฐํ๋ฉด ์ดํด๊ฐ ์ฝ๋ค.
-์ฃผ๋ก s๋ฅผ ๋ถ์ฌ beans๋ผ๊ณ ํ๋ค.
๊ทธ ์ด์ ๋ Java Beans๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ํํธ์จ์ด ์ปดํฌ๋ํธ๋ฅผ ์ ์ํ๋ ๊ท์ฝ์ด๋ฏ๋ก, ์ฌ๋ฌ ๊ฐ์ ์ด๋ฐ ๊ท์ฝ์ ๋ฐ๋ฅด๋ ๊ฐ์ฒด๋ฅผ ์๋ฏธํ ๋ "Beans"๋ผ๋ ๋ณต์ํ์ ์ฌ์ฉํ๋ค.
-> Spring Bean์ Spring IoC(Inversion of Control) ์ปจํ
์ด๋์ ์ํด ๊ด๋ฆฌ๋๋ ๊ฐ์ฒด๋ฅผ ์๋ฏธํ๋ค. ๊ฐ๋ฐ์๊ฐ ์๋ Spring ์ปจํ
์ด๋๊ฐ ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ ๊ฐ์ฒด์ด๋ฉฐ, ์์กด์ฑ ์ฃผ์
์ ํตํด ๊ฐ์ฒด ๊ฐ์ ์์กด ๊ด๊ณ๋ฅผ ์ค์ ํ๊ณ ๊ด๋ฆฌํ๋ ์ญํ ์ ํ๋ค.
์ค์ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์๋ค.
xml์ค์ ํ์ผ์ ์์ฑ
@Component ์ด๋ ธํ ์ด์ ์ผ๋ก ์ค์
*@Bean ์ด๋ ธํ ์ด์ ์ผ๋ก ์ค์
<!-- Bean ์ ์ ์์--> <bean id="myBean" class="com.example.MyBean"> <property name="propertyName" value="propertyValue" /> </bean>
์ด๋ ธํ ์ด์ ์ ํด๋์ค์ ์ฌ์ฉ
@Component public class MyBean { private String propertyName; ...}
๋ฉ์๋์ ์ฌ์ฉ๋๋ฉฐ ์ด ๋ฉ์๋๊ฐ ๋ฐํํ๋ ๊ฐ์ฒด๋ฅผ Spring ์ปจํ ์ด๋๊ฐ ๊ด๋ฆฌํ๋ ๋น์ผ๋ก ๋ฑ๋กํ๋ค. ์ฃผ๋ก @Configurationํด๋์ค์์ ์ฌ์ฉ๋๋ค.
@Configuration public class AppConfig { @Bean public MyBean myBean() { return new MyBean(); } }
+++
@Component ์ด๋
ธํ
์ด์
์ด ์๋ ํด๋์ค ๋ด์์๋ @Bean์ ์ฌ์ฉํ ์ ์์ง๋ง, @Configuration๊ณผ๋ ์ฐจ์ด์ ์ด ์๋ค. @Configuration ํด๋์ค๋ ์ ์ฒด ํด๋์ค๊ฐ ํ๋ก์๋ก ๊ฐ์ธ์ ธ์ ๋น์ ์ฌ๋ฌ ๋ฒ ํธ์ถํ ๋ ๊ฐ์ ์ธ์คํด์ค๋ฅผ ๋ฐํํ๋ ๋ฐ๋ฉด์ @Component๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ์ด์ ๊ฐ์ ํ๋ก์๊ฐ ์ฌ์ฉ๋์ง ์์ผ๋ฏ๋ก ๋์ผํ @Bean ๋ฉ์๋๋ฅผ ์ฌ๋ฌ ๋ฒ ํธ์ถํ ๋ ๋งค๋ฒ ์๋ก์ด ์ธ์คํด์ค๋ฅผ ๋ฐํํ ์ ์๋ค.