본문 내용은 초보 웹 개발자를 위한 스프링5 프로그래밍 입문(최범균)을 참고하고 있습니다.
스프링 컨테이너는 자바 객체의 생명 주기를 관리하며, 생성된 자바 객체들에게 추가적인 기능을 제공하는 역할을 한다. 여기서 말하는 자바 객체를 스프링에서는 빈(Bean)이라고 부르며 IoC와 DI의 원리가 이 스프링 컨테이너에 적용된다.
AnnotationConfigApplicationContext 클래스의 계층도 일부이다. 가장 상위에 BeanFactory 인터페이스가 위치하고 있다.
BeanFactory 인터페이스
- 객체 생성과 검색에 대한 기능을 정의한다.
- 예를 들어 생성된 객체를 검색하는데 필요한 getBean() 메소드가 BeanFactory에 정의되어 있다.
- 객체를 검색하는 것 이외에 싱글톤/프로토타입 빈인지 확인하는 기능도 제공한다.
ApplicationContext 인터페이스
- 메시지, 프로필/환경 변수 등을 처리할 수 있는 기능을 추가로 정의한다.
가장 하단의 세 개의 클래스는 BeanFactory와 ApplicationContext에 정의된 기능의 구현을 제공한다.
- AnnotationConfigApplicationContext : 자바 애노테이션을 이용한 클래스로부터 객체 설정 정보를 가져온다.
- GenericXmlApplicationContext : XML로부터 객체 설정 정보를 가져온다.
- GenericGroovyApplicationContext : 그루비 코드를 이용해 설정 정보를 가져온다.
어떤 구현 클래스를 사용하든, 각 구현클래스는 설정 저옵로부터 빈(Bean)이라는 객체를 생성하고 그 객체를 내부에 보관한다. 그리고 getBean() 메소드를 실행하면 해당하는 빈 객체를 제공한다.
ex)
// 1. 설정 정보를 이용해서 빈 객체를 생성한다.
AnnotationConfigApplicationContext ctx = new AnnotataionConfigApplicationContext(AppContext.class);
// 2. 빈 객체를 제공한다.
Greeter g = ctx.getBean("greeter", Greeter.class);
ApplicationContext(또는 BeanFactory)는 빈 객체의 생성, 초기화, 보관, 제거 등을 관리하고 있어서 ApplicationContext를 컨테이너(Container)라고도 부른다. 참고하는 책에서는 ApplicationContext나 BeanFactory 등을 스프링 컨테이너라고 표현한다.
'Back-end > Spring' 카테고리의 다른 글
빈 라이프 사이클과 범위 (0) | 2021.10.01 |
---|---|
컴포넌트 스캔(@Component, @ComponentScan) - 학습필요 (0) | 2021.10.01 |
의존 자동 주입 (0) | 2021.10.01 |
스프링 DI (0) | 2021.10.01 |
싱글톤(Singleton) 객체 (0) | 2021.10.01 |