(Java Spring) 2-30. 다양한 설정 형식 지원 – Java 코드, XML
1. 스프링 컨테이너는 다양한 형태의 구성 정보를 받을 수 있도록 유연하게 설계되었습니다.
- Java 코드, XML, Groovy 등
2. 주석 기반 Java 코드 설정 사용
- 지금까지 했던 것이다.
- new AnnotationConfigApplicationContext (AppConfig.class)
- AnnotationConfigApplicationContext 클래스를 사용하면서 Java 코드의 설정 정보를 전달합니다.
3. XML 설정 사용
- 최근에는 스프링 부팅을 많이 사용하면서 XML 기반 구성이 잘 사용되지 않습니다.
아직 많은 레거시 프로젝트가 XML로 되어 있고, 또 XML을 사용하면 컴파일 없이 빈 설정 정보를 변경할 수 있는 메리트도 있으므로, 한 번 정도 배워 두는 것도 괜찮다. - GenericXmlApplicationContext를 사용하면서 xml 구성 파일을 전달하면 됩니다.
4. test > java > hello.core > xml 패키지 생성
5. XmlAppContext 클래스 생성
6. 코드 작성
package hello.core.xml;
import hello.core.member.MemberService;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
import static org.assertj.core.api.Assertions.assertThat;
public class XmlAppContext {
@Test
void xmlAppContext() {
ApplicationContext ac = new GenericXmlApplicationContext("appConfig.xml");
MemberService memberService = ac.getBean("memberService", MemberService.class);
assertThat(memberService).isInstanceOf(MemberService.class);
}
}
7. main > resources > 신규 > XML 구성 파일 > Spring 구성
8. appConfig.xml 생성
9. 코드 작성
<?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.xsd">
<bean id="memberService" class="hello.core.member.MemberServiceImpl">
<constructor-arg name="memberRepository" ref="memberRepository"/>
</bean>
<bean id="memberRepository" class="hello.core.member.MemoryMemberRepository"/>
<bean id="orderService" class="hello.core.order.OrderServiceImpl">
<constructor-arg name="memberRepository" ref="memberRepository"/>
<constructor-arg name="discountPolicy" ref="discountPolicy"/>
</bean>
<bean id="discountPolicy" class="hello.core.discount.RateDiscountPolicy"/>
</beans>
10. XmlAppContext 빌드
11. xml 기반 appConfig.xml 스프링 구성 정보와 Java 코드의 AppConfig.java 설정 정보를 비교하면 거의 비슷하다는 것을 알 수 있습니다.
12. xml 기반 설정은 최근에 잘 사용되지 않으므로 이 정도로 마무리하고 필요하다면 Spring 공식 참조 문서를 확인하자.