Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

UpDown Dev Story

스프링 컨테이너의 정의와 종류 본문

Spring

스프링 컨테이너의 정의와 종류

updown 2021. 5. 20. 17:30

정의

스프링 프레임워크는 스프링의 빈을 생성하고 관리하는 컨테이너를 가지고 있다.
이를 통해서 스프링의 주개념인 IOC 나 AOP에 대해서 관리하곤 한다.

스프링 컨테이너의 종류

먼저 스프링 컨테이너의 종류는 BeanFactory와 이를 상속한 ApplicationContext 2가지 유형이 존재한다.

Bean Factory

Bean Factory는 스프링 설정파일에 등록된 Bean 객체를 생성하고 관리하는 기본적인 기능만 제공한다.
컨테이너가 구동될 때 Bean 객체를 생성하는 것이 아니라 클라이언트의 요청에 의해서 Bean 객체가 사용되는 시점(Lazy Loading) 에 객체를 생성하는 방식을 사용하고 있다.

일반적으로 스프링 프로젝트에서는 사용될 일이 없지만, ApplicationContext는 BeanFactory를 상속받고 있다는 것을 알아두자.

Application Context

Bean Factory와 마찬가지로, Bean 객체를 생성하고 관리하는 기능을 가지고 있다.
뿐만 아니라 트랜잭션 관리, 메시지 기반의 다국어 처리, AOP 처리등등 DI(Dependency Injection) 과 Ioc(Inverse of Conversion) 외에도 많은 부분을 지원하고 있다.

아무래도 컨테이너가 구동되는 시점에 객체들을 생성하는 Pre-Loading 방식이 Bean Factory와 가장 큰 차이점이 아닌가 싶다. (물론 위에 트랜잭션 관리 이부분도 크지만!)

ApplicatonContext가 제공하는 부가기능

메시지소스를 활용한 국제화 기능

예를 들어서 한국에서 들어오면 한국어로, 영어권에서 들어오면 영어로 출력

환경변수
로컬, 개발, 운영등을 구분해서 처리

애플리케이션 이벤트
이벤트를 발행하고 구독하는 모델을 편리하게 지원

편리한 리소스 조회
파일, 클래스패스, 외부 등에서 리소스를 편리하게 조회

정리
ApplicationContext는 BeanFactory의 기능을 상속받는다.
ApplicationContext는 빈 관리기능 + 편리한 부가 기능을 제공한다.
BeanFactory를 직접 사용할 일은 거의 없다.
부가기능이 포함된 ApplicationContext를 사용한다.
BeanFactory나 ApplicationContext를 스프링 컨테이너라 한다.

 

 

Comments