책책책/토비의 스프링 3.1

[Spring] 스프링 XML 설정

Deveun 2021. 7. 2. 00:30

토비의 스프링 1장: 오브젝트와 의존관계

XML 설정

스프링에서는 ApplicationContext에서 Factory 자바 클래스를 이용하는 것 외에도 다양한 방법으로 DI 의존관계 설정정보를 만들 수 있다. 가장 대표적인것이 바로 XML이다.

 

o 장점

- 텍스트파일이라 다루기 쉬움

- 별도의 빌드 작업이 없음

- 빠르게 변경사항을 반영할 수 있음

- 스키마나 *DTD를 이용한 포맷확인이 가능

 

*DTD(Document Type Definition)

: XML파일 내부 <!DOCTYPE>.. 사이에 쓰여진 부분으로 XML 데이터를 validate.

 

 

자 그럼 이전 Factory 자바 클래스의 @Configuration, @Bean으로 나타냈던 부분을 XML로 변경해보자.

 

- @Configuration은 <beans>으로 변경된다.

- @Bean은 <bean>이 되고, 빈은 getBean()으로 가져올 메소드 이름이 빈의 이름(id) / 실제 생성되는 클래스명이 빈의 클래스(class) / 수정자 메소드를 통해 주입되는 의존관계가 있을 때, 의존 오브젝트의 정보(property) 이렇게 3가지 정보를 가진다.

- <property>는 의존 오브젝트 주입을 위한 수정자 메소드 명을 name / 주입되는 빈의 이름을 ref로 가진다. (value을 가질 수도 있음)

 

 

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
    
    <bean id="aSettingMaker" class="a.b.c...ASettingMaker" />
    <bean id="bSettingMaker" class="a.b.c...BSettingMaker" />
    
    <bean id="solution" class="a.b.c...Solution">
    	<property name="settingMaker" ref="aSettingMaker"/> <!-- a, b.. 선택 가능-->
    </bean>

 

XML파일을 작성한 뒤에는 이 설정정보를 클라이언트의 ApplicationContext로 사용하기 위해 다음과 같은 코드를 써준다.

 

SolutionTest.java

public class SolutionTest {
    public static void main(String[] args) {
        
        // Factory 자바 클래스 사용
        // ApplicationContext context = new AnnotationConfigApplicationContext(SolutionFactory.class);
        
        // XML 사용
        ApplicationContext context = new GenericXmlApplicationContext("applicationContext.xml");
                
        Solution aSolution = context.getBean("solution", Solution.class); 
    }
}

 

 

 

[참고서적] http://www.acornpub.co.kr/book/toby-spring3.1-vol1#spring3

 

토비의 스프링 3.1 Vol. 1 스프링의 이해와 원리

스프링의 핵심 프로그래밍 모델의 원리와 이에 적용된 다양한 디자인 패턴, 프로그래밍 기법의 이해를 돕는 책

www.acornpub.co.kr