2023. 9. 20. 20:54ㆍSpring
Spring은 Java를 통한 Annotation 설정뿐만 아니라 xml 설정과 커스텀 설정도 지원한다.
xml의 경우 GenericXmlApplicationContext 클래스를 통해 할 수 있고 인자로 xml 파일을 넣어주면 된다.
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>
bean 안에는 이름인 id와 구현체인 class 값을 넣어준다. 인자는 constructor-arg를 통해 전달하는데 name은 생성자에 들어가는 매개변수를 뜻하며 넣고자 하는 매개변수의 이름과 일치해야 한다. ref는 인자값을 의미하게 된다. 즉 name은 OrderServiceImpl 생성자에 들어가는 매개변수 이름 중 하나이며 ref는 거기에 들어가는 인자이자 bean의 이름이다.
하지만 ref에 있는 memberRepository는 넣어주기 위해서는 새로운 그에 해당하는 bean이 있어야 하므로 또 생성하게 된다.
자세한 내용은 아래를 참고하면 된다.
Spring Framework
The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind of deployment platform. A key element of Spring is infrastructural support at the application level: Spring focuse
spring.io
Reference
학습 페이지
www.inflearn.com
'Spring' 카테고리의 다른 글
[Spring] 스프링 없는 순수한 DI 컨테이너의 문제점 (0) | 2023.09.21 |
---|---|
[Spring] BeanDefinition에 대한 나름의 이해 (0) | 2023.09.21 |
[Spring] BeanFactory와 ApplicationContext에 대한 나름의 이해 (0) | 2023.09.20 |
[Spring] bean 조회에 대한 나름의 이해 (0) | 2023.09.20 |
[Spring] 타입으로 조회하기 (0) | 2023.09.19 |