[spring] 스프링 컨테이너 (스프링 기본편 by 김영한)

su_y2on·2022년 1월 20일
0

Spring

목록 보기
15/30
post-thumbnail

스프링 컨테이너

지금까지는 순수한 java코드로만 의존성을 주입했지만 이제 스프링을 적용해보겠습니다.

AppConfig

설정파일을 뜻하는 @Configuration 어노테이션을 붙여주고 각각의 메서드에 @Bean을 붙여줘서 스프링빈으로 등록해줍니다.

@Configuration
  public class AppConfig {
  
      @Bean
      public MemberService memberService() {
          return new MemberServiceImpl(memberRepository());
      }
      
      @Bean
      public OrderService orderService() {
          return new OrderServiceImpl(
                  memberRepository(),
                  discountPolicy());
	}
    
    ....
    
}

MemberApp

이전에는 MemberService를 AppConfig에서 받아왔다면 이제는 스프링 컨테이너에서 스프링빈의 형태로 가져옵니다.

public class MemberApp {
      public static void main(String[] args) {
  //        AppConfig appConfig = new AppConfig();
  //        MemberService memberService = appConfig.memberService();
          ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
          MemberService memberService = applicationContext.getBean("memberService", MemberService.class);
          }
   }

OrderApp

같은 원리로 orderapp도 수정해줍니다.

public class OrderApp {

public static void main(String[] args) {
//      AppConfig appConfig = new AppConfig();
//      MemberService memberService = appConfig.memberService();
//      OrderService orderService = appConfig.orderService();

        ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
        MemberService memberService = applicationContext.getBean("memberService", MemberService.class);
        OrderService orderService = applicationContext.getBean("orderService", OrderService.class);
        }
  }




스프링 컨테이너 생성 과정

스프링 컨테이너는 ApplicationContext입니다. 스프링 컨테이너는 XML기반과 어노테이션 기반의 자바클래스 이렇게 두가지 방법을 이용해서 생성할 수 있습니다. AppConfig는 어노테이션 기반으로 생성하는 방법이며 따라서 아래와 같은 코드로 컨테이너를 생성하는 것입니다.

//스프링 컨테이너 생성
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);

그 뒤로 AppConfig에 있는 @Bean을 보고 스프링 빈 저장소에 등록합니다. 그리고 다시 의존관계를 참고해서 스프링 빈끼리 의존관계를 주입해줍니다.

그런데 지금처럼 자바코드만으로 의존성 주입을 작성하면 스프링 빈 생성과 의존성주입이 같이 일어나게 됩니다.

0개의 댓글