XML 설정하기
- 루트 엘리먼트로 <beans> 사용
- beans 안에는 여러개의 bean을 정의할 수 있음
@Bean 메소드
- 하나의 Bean 메소드로 얻을 수 있는 빈의 DI 정보는 세 가지이다.
- 빈의 이름 : @Bean 메소드의 이름이다. getBean()에서 이름으로 bean을 불러올 때 사용된다.
- 빈의 클래스 : 빈 오브젝트를 어떤 클래스를 이용해서 만들지를 결정한다.
- 빈의 의존 오브젝트 : 빈의 생성자 / 수정자를 통해 오브젝트를 넣어준다. 의존 오브젝트는 하나 이상일 수 있고, 마찬가지로 빈이다
connectionMaker() 전환
자바 코드 설정 정보 |
XML 설정 정보 |
@Configuration |
<beans> |
@Bean methodName() |
<bean id=”methodName”> |
return new BeanClass() |
<bean class=”a.b….BeanClass”> |
- connectionMaker는 의존 오브젝트는 없으므로, 빈의 이름과 클래스만 있으면 됨.
- 빈의 이름은 id, 빈의 클래스는 class 속성으로 나타낼 수 있다.
- class에는 메소드 리턴 타입이 아닌 패키지 이름까지 모두 포함한 이름이 들어가야 한다.
<bean id="connectionMaker" class="springBook...DconnectionMaker"/>
<!-- 이처럼, class에는 메소드 리턴 타입이 아닌 패키지를 포함하는 클래스 이름이 들어감 -->
- DI 컨테이너가 이러한 XML 설정 파일을 읽어서 작업을 수행함.
userDao() 전환
- userDao에는 세 가지가 다 들어가 있음
- 의존 오브젝트와의 관계는 <property> 태그를 활용한다.
- property에는 name(프로퍼티 이름)과 ref(bean 이름) 속성이 있음
userDao.setConnectionMaker(connectionMaker())
-->
<bean id="userDao" class="springBook...dao.userDao">
<property name="connectionMaker" ref="connectionMaker"/>
</bean>
XML의 의존관계 주입 (DI) 정보
- DaoFactory의 설정 정보를 xml로 나타내면 다음과 같다.
<beans>
<bean id="connectionMaker" class="springBook...DconnectionMaker"/>
<bean id="userDao" class="springBook...dao.userDao">
<property name="connectionMaker" ref="connectionMaker"/>
</bean>
</beans>
- property의 이름이나 bean의 이름은 다르게 저장해도 된다.
- bean의 이름을 바꾼다면, property의 ref 속성도 적절히 수정해야 한다.