BeanFactory❓❓ ApplicationContext❓❓
BeanFactory
- 스프링 컨테이너의 최상위 인터페이스
- 스프링 빈을 관리하고 조회하는 역할 담당
- getBean()을 제공
- 앞서 Bean을 조회하고 꺼내는 등의 대부분 기능은 BeanFactory가 제공하는 기능
ApplicationContext
- BeanFactory기능을 모두 상속받아 제공한다.
- 빈을 관리하고 검색하는 기능을 BeanFactory가 제공해주는데 그럼 둘의 차이는 무엇일까?
- 애플리케이션을 개발할 때 빈은 관리 / 조회 기능과 더불어 수 많은 부가 기능이 필요
- 그 부가 기능을 제공
- 실제로 ApplicationContext에 들어가보면 여러가지를 상속받고 있고 최상위에 BeanFactory가 있음을 확인할 수 있다.
🙀ApplicationContext가 제공하는 부가기능🙀
- MessageSource : 메시지소스를 활용한 국제화 기능
- ex) 한국에서 들어오면 한국어로, 영어권에서 들어오면 영어로 출력
- EnvironmentCapable : 환경변수
- 로컬, 개발, 운영등을 구분해서 처리
- 로컬 개발환경 : 현재 내 PC에서 개발하는 환경
- 개발환경(테스트서버) : 테스트서버에 올려서 여러 시스템을 엮어 서버에 띄워두고 테스트할 수 있는 환경
- 운영환경 : 실제 production에 나가게되는 환경
- 각 환경별로 어떤 DB에 연결해야될지...같은 설정을 해줌
- 로컬, 개발, 운영등을 구분해서 처리
- ApplicationEventPublisher : 애플리케이션 이벤트
- 이벤트를 발행하고 구독하는 모델을 편리하게 지원
- ResourceLoader : 편리한 리소스 조회
- 파일, 클래스패스, 외부 등에서 리소스를 편리하게 조회
- 추상화하여 내부에서 편리하게 쓸 수 있는 기능을 제공
BeanFactory를 직접 사용할 일은 거의 없다. 부가기능이 포함된 ApplicationContext를 사용
BeanFactory나 ApplicationContext를 스프링 컨테이너라 한다.
반응형
'Spring > Spring Core' 카테고리의 다른 글
스프링 빈 설정 메타 정보 - BeanDefinition (0) | 2021.03.10 |
---|---|
다양한 설정 형식 지원 (0) | 2021.03.10 |
Spring Bean 조회 (0) | 2021.03.09 |
Container에 등록된 Bean 조회 (0) | 2021.03.08 |
Spring Container (0) | 2021.03.08 |