BeanFactory
ApplicationContext
ApplicationContext가 제공하는 부가기능이란?
메시지 소스를 활용한 국제회 기능 : 한국에서 들어오면 한국어로, 영어권에서 들어오면 영어로 출력
환경변수 : 로컬(내pc), 개발(테스트서버), 운영(실제 서비스) 등을 구분해서 처리
애플리케이션 이벤트 : 이벤트를 발행하고 구독하는 모델을 편리하게 지원
편리한 리소스 조회 : 파일, 클래스패스, 외부 등에서 리소스를 편리하게 조회
BeanFactory나 ApplicationContext를 스프링 컨테이너라 한다. ApplicationContext를 보통 얘기한다.
다양한 설정 형식 지원 - 자바 코드, XML
위와 같이 ApplicationContext를 상속받아 쓸 수 있도록 미리 설계되어 있다.
애노테이션 기반 자바 코드 설정 사용: 지금껏 했던 방식처럼 new AnnotationConfigApplicationContext(AppConfig.class) 사용
스프링 빈 설정 메타 정보 - BeanDefinition
AnnotationConfigApplicationContext 는 AnnotatedBeanDefinitionReader 를 사용해서 AppConfig.class 를 읽고 BeanDefinition 을 생성한다. 자바 코드를 설정정보처럼 읽음.
GenericXmlApplicationContext 는 XmlBeanDefinitionReader 를 사용해서 appConfig.xml 설정 정보를 읽고 BeanDefinition 을 생성한다.
새로운 형식의 설정 정보가 추가되면, Xxx(임의)BeanDefinitionReader를 만들어서 BeanDefinition 을 생성하면 된다.
스프링 빈을 등록하는 방법은 xml로 직접 등록하는 방법과 자바 코드를 통해 팩토리 빈으로 등록하는 방법 등이 있는데, 우리가 보통 자바 코드를 통해 빈을 등록하는 방법은 팩토리 빈을 통해 등록하는 것이다.
정리