-
(스프링 기본) 10 - 다양한 설정 형식 지원(자바코드, XML)개발/Spring 2024. 10. 9. 16:45
스프링은 자바 코드, XML, Groovy 등 다양한 형식의 설정 정보를 받아드릴 수 있게 설계되 있다.
1. 애노테이션 기반 자바 코드
- new AnnotationConfigApplicationContext(AppConfig.class)
- AnnotationConfigApplicationContext 클래스를 사용하면서 자바 코드로 된 설정 정보를 넘기면 된다.
2. XML 설정
- 최근에는 잘 사용 안하고 레거시 프로젝트들이 XML 로 많이 돼 있다.
- XML 사용하면 컴파일 없이 빈 설정 정보를 변경할 수 있는 장점이 있다.
- GenericXmlApplicationContext 사용하면서 xml 설정 파일을 넘기면 된다.
public class XmlAppContext { @Test void xmlAppContext() { ApplicationContext ac = new GenericXmlApplicationContext("appConfig.xml"); MemberService memberService = ac.getBean("memberService", MemberService.class); assertThat(memberService).isInstanceOf(MemberService.class); } }
XML 의 경우 GenericXmlApplicationContext 를 통해 appConfig.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.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>
코드는 다음과 같다.
memberService 빈을 통해 생성되는 객체의 확장명을 다 써주고, 생성자도 constructor-arg 를 통해 넣어준다.
생성자에 해당하는 bean 도 마찬가지 id 와 확장명을 넣어줘서 정의해준다.
출처 : 김영한 스프링 핵심 원리 - 기본편
'개발 > Spring' 카테고리의 다른 글
(스프링 기본) 12 - 웹 애플리케이션과 싱글톤 (0) 2024.10.23 (스프링 기본) 11 - 스프링 빈 설정 메타 정보(BeanDefinition) (2) 2024.10.09 (스프링 기본) 9 - BeanFactory 와 ApplicationContext (0) 2024.10.09 (스프링 기본) 8 - 컨테이너에 등록된 모든 빈 조회 (1) 2024.10.09 (스프링 기본) 7 - 스프링 컨테이너 생성 (0) 2024.10.07