Spring bean 기초

잘하고싶다·2022년 5월 12일
0

spring

목록 보기
2/4

bean에 등록하기 위해서는 AppConfig 파일에 @Bean으로 등록해줘야 한다.

@Configuration
public class AppConfig {

    @Bean
    public MemberService memberService(){
        return new MemberServiceImpl(getMemberRepository());
    }

    @Bean
    public MemoryMemberRepository getMemberRepository() {
        return new MemoryMemberRepository();
    }

    @Bean
    public OrderService orderService(){
        return new OrderServiceImpl(getMemberRepository(), getDiscountPolicy());
    }

    @Bean
    public DiscountPolicy getDiscountPolicy() {
        return new RateDiscountPolicy();
    }
}

Bean 등록 후 spring 실행시 초기 화면에 singleton으로 스프링 컨테이너에 등록된 것을 알 수 있다.

이후 Bean 호출 하고 싶을 시 ApplicationContext를 이용하여 AppConfig 호출 후 getBean메소드를 통해 호출한다.

        
        ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);

        MemberService memberService = applicationContext.getBean("memberService", MemberService.class);

        OrderService orderService = applicationContext.getBean("orderService", OrderService.class);

스프링 컨테이너 생성 과정

  1. new AnnotationConfigApplicationContext(AppConfig.class); 를 통해 스프링 컨테이너 생성

  2. 생성된 스프링 컨테이너는 AppConfig.class 구성정보 활용

  3. AppConfig.class를 참고하여 의존관계를 설정한다.

@Configuration
public class AppConfig {

    @Bean
    public MemberService memberService(){ //memberService는 getMemberRepository를 의존함
        return new MemberServiceImpl(getMemberRepository());
    }

    @Bean
    public MemoryMemberRepository getMemberRepository() {
        return new MemoryMemberRepository();
    }

    @Bean
    public OrderService orderService(){ //orderService는 getMemberRepository, getDiscountPolicy를 의존
        return new OrderServiceImpl(getMemberRepository(), getDiscountPolicy());
    }

    @Bean
    public DiscountPolicy getDiscountPolicy() {
        return new RateDiscountPolicy();
    }
}

0개의 댓글