[Spring] xml 설정 정보에 대한 나름의 이해

2023. 9. 20. 20:54Spring

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이 있어야 하므로 또 생성하게 된다.

 

자세한 내용은 아래를 참고하면 된다.