Spring Container란?
- 자바 객체의 생명 주기를 관리하고, 생성된 자바 객체들에 추가적인 기능을 제공하는 역할
- 여기서 자바 객체는 스프링에서 Bean(빈)이라고 명칭
- 개발자가 new연산자, 인터페이스 호출, 팩토리 호출 방식으로 객체를 생성하고 소멸시킬 수 있는데, 이를 스프링 컨테이너가 대신해줌. 즉, 제어 흐름을 외부에서 관리하는 것
- 객체간의 의존관계를 스프링 컨테이너가 런타임 과정에서 알아서 만들어 줌
- 흔히 Application Context를 스프링 컨테이너 라고 말함
- 파라미터로 넘어온 설정 클래스 정보 (Config에 @Bean 등등)를 Spring Bean에 등록
Spring Container 종류
1. BeanFactory
- 스프링 컨테이너의 최상위 인터페이스
- 빈을 등록, 생성, 조회하고 돌려주는 등의 빈을 관리하는 역할
- getBean() 메소드를 통해 빈을 인스턴스화 할 수 있음
2. Application Context
- 일반적인 Spring Container를 말하면 Application Context를 의미
- Bean Factory를 포함한 여러 인터페이스들을 상속받는 인터페이스
- Bean Factory에 상속 받아 Bean을 관리하고 검색하는 기능을 Bean Factory가 제공하지만, 부가기능을 제공
- MessageSource : 메시지 다국화를 위한 인터페이스
- EnvironmentCapable : 개발, 운영 등 환경을 분리해서 처리하고 애플리케이션 구동에 필요한 정보를 관리하기 위한 인터페이스
- ApplicationEventPublisher : 이벤트를 발행하고 구독하는 모델을 편리하게 지원하는 인터페이스
- ResourceLoader : 파일, 클래스패스, 외부 등 리소스를 읽어오기 위한 인터페이스
- Application Context 구현 시 new AnnotationConfigApplicationContext(클래스이름.class)를 사용
Spring Container 생성 과정
1. Spring Container 생성
new AnnotationConfigApplicationContext(AppConfig.class);
- Appconfig.class에 스프링 컨테이너 구성정보를 지정
2. Spring Bean 등록
- 스프링 컨테이너에 key : Bean name, value : Bean Object로 들어간다
- @Bean default name은 beanA 이다.
3. 스프링 빈 의존관계 설정
- Spring Container가 Spring Bean을 등록한 후에 의존관계를 자동으로 넣어줌
728x90
'ssung_항해일지 > CS 지식 및 기술면접' 카테고리의 다른 글
23.05.13 - 운동일지 (0) | 2023.05.15 |
---|---|
Rest Client [Spring] (0) | 2023.05.12 |
List, Set, Map, Hash Map (0) | 2023.05.11 |
제네릭 (generic) (0) | 2023.05.10 |
JPA 영속성 컨텍스트 (0) | 2023.05.10 |