스프링의 빈을 생성 관리하는 컨테이너이다.
스프링 컨테이너에는 Bean Factory
와ApplicationContext
2가지 유형이 존재한다.
스프링 설정파일에 등록된 Bean 객체를 생성 관리하는 기본 기능을 제공한다. 클라이언트의 요청에 의해 Bean 객체가 사용되는 시점에 객체를 생성하는 방식을 사용(Lazy Loading)
Bean Factory를 상속받는 스프링 컨테이너
Bean 객체를 생성, 관리하는 기능을 가지고 있으며
트랜잭션 관리, 메시지 기반 다국어 처리, AOP 처리, DI, IoC 등등의 기능 역시 지원한다
컨테이너 구동 시점에 객체를 생성 (Pre-Loading)
AbstractApplicationContext의 Interface를 구현한 구현체.
ClassPathXmlApplicationContext : ClassPath에 위치한 xml 파일을 읽어 설정 정보를 로딩, root로부터 경로를 지정함
FileSystemXmlApplicationContext : 파일 경로로 지정된 곳의 xml을 읽어 설정 정보를 로딩
XmlWebApplicationContext : 웹 어플리케이션에 위치한 곳에서 xml파일을 읽어 설정 정보를 로딩
AnnotationConfigApplicationContext : @Configuration 어노테이션이 붙은 클래스를 이용하여 설정 정보로 로딩
컨테이너 사용을 위해 spring-context 추가
context.getBean(xml파일에서 지정한 id)
Program.java
ApplicationContext context =
new ClassPathXmlApplicationContext("spring/di/setting.xml");
ExamConsole console= (ExamConsole)context.getBean("console"); //
setting.xml
<bean id="exam" class="spring.di.entity.NewlecExam"/>
<bean id="console" class="spring.di.ui.GridExamConsole">
context.getBean(클래스명.class)
ExamConsole console= context.getBean(ExamConsole.class);