spring은 java annotaion 기반으로 DI 의존관계 설정 class를 만드는 것 이외에도 ,
xml을 활용하여 DI 의존관계 설정 class를 만드는 것을 지원한다.
xml의 이용할 경우 별도의 compile이 필요하지 않다는 장점을 가지고 있다.
annotaion의 @Configuration 이 <beans> tag, @Bean 이 <bean> tag와 대응된다.
@Bean에서 bean이름이 될 method name은 xml에서 <bean> tag 의 id attribute,
@Bean에서 bean Class type은 xml에서 <bean> tag의 class attribute 가 된다.
예를 들어
1 2 3 4
| @Bean public ConnectionMaker connectionMaker(){ return new DconnectionMaker(); }
|
위 자바 코드는 아래의 xml 기반의 설정파일과 동일한 의미이다.
1 2 3
| <beans> <bean id="connectionMaker" class="com.springstudy...DconnectionMaker"> <beans>
|
다른 Bean 과의 관계설정은 xml에서 tag를 통해 이루어질 수 있다. property tag의 name attribute는 property 이름 , ref attribute는 setter method를 통해 주입해줄 bean 객체의 이름이다.
예를 들어
1 2 3 4 5 6 7 8
| public class UserDao{ private ConnectionMaker connectionMaker;
public void setConnectionMaker(ConnectionMaker connectionMaker){ this.connectionMaker=connectionMaker; } }
|
위 자바 코드는 아래의 xml 기반의 설정파일과 동일한 의미이다.
1 2 3 4 5 6
| <beans> <bean id="userDao" class="com.springstudy...UserDao"> <property name="connectionMaker" ref="connectionMaker" /> </bean> <beans>
|
application context 를 xml 설정파일로 만드는 방법은 간단하다 다른 구체 class를 사용하면 된다.
1
| GenericXmlApplicationContext("applicationContext.xml");
|
최종적으로 현재 userDao 를 xml설정파일로 bean으로 등록하였다.
1 2 3 4 5 6 7 8 9 10 11 12 13
| <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"> <bean id="connectionMaker" class="com.springstudy.ioc.DconnectionMaker"></bean> <bean id="userDao" class="com.springstudy.ioc.UserDao"> <property name="connectionMaker" ref="connectionMaker"></property> </bean>
</beans>
|
1 2 3 4 5 6
| public static void main(String[] args) { ApplicationContext context = new GenericXmlApplicationContext("applicationContext.xml"); UserDao userDao = context.getBean("userDao", UserDao.class); System.out.println("userDao = " + userDao);
}
|