본문 바로가기

Spring이론

Spring에서 XML을 이용한 설정

반응형

스프링은 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을 이용한 설정방식이 마무리 됩니다.

 

*해당 글은 토비의 스프링을 공부하며 복습하고 싶은 내용을 작성하였습니다.

내용 역시 토비의 스프링을 참조하였습니다.

반응형