Tech/Spring

[스프링 핵심 원리] 스프링 컨테이너 기초

0m1n 2022. 1. 5. 13:52
728x90
반응형

스프링 컨테이너

아래 코드를 살펴보자.

ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);
// AnnotationConfigApplicationContext는 ApplicationContext 인터페이스의 구현체
  • 위 코드에서 ApplicationContext 를 스프링 컨테이너라고 한다. (ApplicationContext는 인터페이스)
  • 스프링 컨테이너는 XML을 기반으로 만들 수 있고, 위 방식처럼 애노테이션 기반 자바 설정 클래스로 만들 수 있다.
  • 기존의 Appconfig를 사용해서 직접 객체를 생성하고 DI → 스프링 컨테이너를 통해 사용
  • 스프링 컨테이너는 @Configuration 이 붙은 AppConfig를 설정 정보로 사용
  • @Bean이라 적힌 메서드를 모두 호출해서 반환된 객체를 스프링 컨테이너에 등록 → 스프링 빈 이라고 함
  • 코드를 실행하게 되면 터미널에 아래와 같이 bean이 생성되는 메시지가 나타난다.
  • 20:38:15.807 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'appConfig'
    20:38:15.812 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'memberService'
    20:38:15.830 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'memberRepository'
    20:38:15.831 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'orderService'
    20:38:15.833 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Creating shared instance of singleton bean 'discountPolicy'
  • 스프링 빈은 기본적으로 @Bean이 붙은 메서드의 명을 이름으로 사용 ( 변경 방법 : @Bean(name = "test") )
  • 빈 이름은 항상 다른 이름을 부여해야 함!
  • AppConfig를 사용해서 직접 조회 → 스프링 컨테이너를 통해 필요한 스프링 빈(객체)을 찾으면 됨
  • applicationContext.getBean() 을 통해 찾음
728x90
반응형