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
반응형
'Tech > Spring' 카테고리의 다른 글
[스프링 핵심 원리] 웹 애플리케이션과 싱글톤 (0) | 2022.01.11 |
---|---|
[스프링 핵심 원리] 스프링 빈 설정 메타 정보 - BeanDefinition (0) | 2022.01.10 |
[스프링 핵심 원리] IoC, DI, 컨테이너 (0) | 2022.01.04 |
[스프링 핵심 원리] DIP와 생성자 주입, 의존관계 주입(DI) (0) | 2022.01.01 |
[스프링 핵심 원리] 객체 지향 설계의 5가지 원칙(SOLID), 스프링 (0) | 2021.12.22 |