*인프런 김영한 강사님의 강좌를 참고하여 정리한 내용입니다.*
스프링 컨테이너의 최상위 인터페이스. 스프링 빈을 관리하고 조회하는 역활을 담당하며 getBean()을 제공한다.
BeanFactory 인터페이스를 상속받아 구현한 ApplicationContext는 스프링 컨테이너 역활을 한다.
애플리케이션을 개발할 때는 빈을 관리하며 조회하는 기능 외에도 수 많은 부가기능이 필요하다. 따라서 ApplicaitonContext는 BeanFacotry 이외에도 여러 인터페이스들을 상속한다.
메시지 소스를 활용한 국제화 기능
한국에서 들어오면 한국어, 영어권에서 들어오면 영어로 출력
환경변수 설정
로컬, 개발, 운영등의 영역을 구분하여 처리
애플리케이션 이벤트
이벤트를 발행하고 구독하는 모델을 편리하게 지원
편리한 리소스 조회
파일, 클래스패스, 외부 등에서 리소스를 편리하게 조회
스프링 컨테이너는 XML기반 혹은 애노테이션 기반의 자바 설정 클래스로 생성할 수 있다.
@Configuration
pulbic class AppConfig {
@Bean
public ... {
...
@Configuration 어노테이션이 붙은 클래스를 스프링 컨테이너 구성정보로 활용한다. 여기서 @Bean이 붙은 메소드를 모두 호출해서 반한된 객체를 스프링 컨테이너에 등록한다. 이렇게 스프링 컨테이너에 등록된 객체를 스프링 빈이라고 한다.
// 스프링 컨테이너 생성
ApplicationContext ac =
new AnnotaionConfigApplcationContext(AppConfig.calss);
구성 정보를 지정해 준 클래스를 파라미터에 등록해준다.
파라미터로 넘어온 설정 클래스 정보를 사용하여 스프링 빈을 등록한다. 빈 이름의 디폴트값은 메서드 이름이며 직접 이름을 부여할 수도 있다!
@Bean(name="xxx")