스프링은 DaoFactory와 같은 java class를 이용하는 것 외에도, 다양한 방법을 통해 DI 의존관계 설정 정보를 만들 수 있는데, 가장 대표적인 것이 바로 XML을 이용한 설정방식입니다.
XML을 이용할 경우의 장점
1. XML은 text file이기 때문에 다루기 쉽고, 쉽게 이해할 수 있습니다.
2. compile과 같은 별도의 build작업이 없습니다.
3. 환경이 달라져서 object 관계가 바뀌는 경우에도 빠르게 변경사항을 반영할 수 있습니다.
4. schema나 DTD를 이용해서 정해진 format을 따라 작성됐는지 손쉽게 확인할 수도 있습니다.
본격적인 XML 설정방법
spring의 application context는 XML에 담긴 DI 정보를 활용할 수 있습니다.
DI 정보가 담긴 XML file은 <beans>를 루트 엘리먼트로 사용합니다.
XML 설정은 @Configuration과 @Bean이 붙은 java class로 만든 설정과 내용이 동일합니다.
@Configuration을 <beans>, @Bean을 <bean>에 대응하여 생각하면 됩니다.
- bean의 이름 : @Bean method의 이름이 bean의 이름입니다. 이 이름은 getBean()에서 사용됩니다.
- bean의 class : bean object를 어떤 class를 이용해서 만들지를 정의합니다.
- bean의 의존 object : bean의 생성자나 수정자 method를 통해 의존 object를 넣어 줍니다.
의존 object도 하나의 bean이므로 이름이 있을 것이고,
그 이름에 해당화는 method를 호출해서 의존 object를 가져옵니다.
의존 object는 하나 이상일 수도 있습니다.
* class 설정과 XML 설정의 대응항목
java code 설정정보 | XML 설정정보 | |
bean 설정file | @Configuration | <beans> |
bean의 이름 | @Bean methodName() | <bean id="methodName" |
bean의 class | return new BeanClass(); | class="x.y.z..BeanClass"> |
위의 표를 기반으로 DaoFactory code를 전환할 경우의 예시입니다.
@Bean // <bean
public ConnectionMaker
connectionMaker(){ // id="connectionMaker"
return new DconnectionMaker(); // class="springbook...DconnectionMaker" />
}
이번에는 userDao() method를 XML로 변환해보겠습니다.
userDao.setConnectionMaker(connectionMaker());
// userDao.setConnectionMaker()의 경우 userDao bean의 connectionMaker property를 이용해 의존관계 정보를 주입하라는 뜻입니다.
여기서 관심을 가질 것은 수정자 method를 사용해 의존관계를 주입해주는 부분입니다.
spring개발자가 수정자 method를 선호하는 이유 중에는 XML로 의존관계 정보를 만들 때 편리하다는 부분 때문입니다.
여기서 수정자 method의 경우 property가 됩니다.
XML에서의 경우 <property> tag를 이용해 의존 object와의 관계를 정의합니다.
<property> tag의 경우 name과 ref라는 2개의 attribute를 갖는데,
name의 경우 property의 이름에 해당하고 ref의 경우 수정자 method를 통해 주입해줄 object bean 이름입니다.
위의 userDao code를 XML로 전환하면 아래의 예시처럼 됩니다.
<property name="connectionMaker" ref="connectionMaker" />
// 프로퍼티의 이름은 method인 setConnectionMaker()에서 set을 제외한 나머지이다.
// setConnectionMaker()안에 들어있는 connectionMaker()는 connectionMaker() method를 호출해서 return 하는 object를 주입하라는 의미로 ref에 작성된다.
DaoFactory로부터 XML 전환 과정 최종본
<beans>
<bean id="connectionMaker" class="springbook.user.dao.DconnectionMaker" />
<bean id="userDao" class="spring.user.dao.UserDao">
<property name="connectionMaker" ref="connectionMaker" />
</bean>
</beans>
이렇게 spring에서 XML을 이용한 설정방식이 마무리 됩니다.
*해당 글은 토비의 스프링을 공부하며 복습하고 싶은 내용을 작성하였습니다.
내용 역시 토비의 스프링을 참조하였습니다.
'Spring이론' 카테고리의 다른 글
Spring security로 회원가입 및 로그인 구현 이론(1) (0) | 2023.06.19 |
---|---|
spring boot에서 test code 작성(TDD, Junit) (0) | 2023.05.30 |
애플리케이션 컨텍스트의 동작방식 (0) | 2023.03.29 |
DAO생성해서 간단한 CRUD 구현하기 (0) | 2023.03.28 |
Spring 개념 부족을 해결하기 위해서 (0) | 2023.03.28 |