Spring Bean 설정 2가지

Mina Park·2022년 8월 16일
0
  1. 애노테이션 기반 자바 코드 설정 사용
  • new AnnotationConfigApplicationContext(AppConfig.class)
@Configuration //설정정보
public class AppConfig {

    @Bean //스프링 컨테이너에 등록ㄴ
    //애플리케이션의 실제 동작에 필요한 구현 객체를 생성
    //생성한 객체 인스턴스의 참조(레퍼런스)를 생성자를 통해서 주입(연결)
    //메서드 이름만으로도 역할과 전체구성을 알 수 있도록 리팩토링(중복제거, 이후 구현체 변경시에도 변경코드 축소)
    public MemberService memberService() {
        return new MemberServiceImpl(memberRepository()); //생성자 주입
    }


    @Bean
    private static MemberRepository memberRepository() {
        return new MemoryMemberRepository();
    }

    @Bean
    public OrderService orderService() {
        return new OrderServiceImpl(memberRepository(), discountPolicy());
    }

    @Bean
    public DiscountPolicy discountPolicy() {
//        return new FixDiscountPolicy();
        return new RateDiscountPolicy(); //변경시 구성 영역만 변경하면 OK (사용영역에 변경 영향 x)
    }
}
  1. XML 설정 사용
  • 최근에는 스프링 부트를 많이 사용하면서 XML기반의 설정은 잘 사용하지 않는 편
  • GenericXmlApplicationContext
<?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>

0개의 댓글