스프링 컨테이너 2-3 Spring IoC 컨테이너
2-3스프링 컨테이너 ( Spring IoC 컨테이너 )
Bean Factory
컨테이너에서 관리할 객체들을 위한 별도의 bean 설정 파일(XML)을 이용함.
dependency lookup
Spring은 설정 파일 저장소로부터 Bean 이름으로 찾아서 사용할 수 있도록 함.
getBean 메서드 사용하여 사용할 Bean 찾음
applicationContext.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd ">
<bean id="samsung" class="com.multicampus.biz.ioc.SamsungTV" />
<bean id="lg" class="com.multicampus.biz.ioc.LgTV" />
</beans>
…
BeanFactory factory = new XmlBeanFactory(
new ClassPathResource("applicationContext.xml"));
TV tv = (TV)factory.getBean("samsung");
…
Spring Framework는 Container와 Bean으로 구성
Bean
컨테이너에 의해 인스턴스화되며, 다른 Bean들과의 관계가 관리된다.
Spring Container
Spring 프레임워크에서 컨테이너 기능을 제공해주는 클래스
흔히 컨테이너 객체라고 부름
Spring 프레임워크의 초기화 역할을 담당함.
Spring Container의 종류
BeanFactory
- Bean의 생성과 소멸 담당
- Bean 생성 시 필요한 속성 설정
- Bean 의 Life Cycle 에 관련된 메소드 호출
- 동작 방식 : lazy-loading
- 구현 클래스 : XmlBeanFactory
ApplicationContext
- BeanFactory 의 모든 기능 제공
- ResourceBundle 파일을 이용한 국제화(I18N) 지원
- 다양한 Resource 로딩 방법 제공
- 이벤트 핸들링 제공
- 동작 방식 : pre-loading
- 구현 클래스 :
XmlWebApplicationContext,
FileSystemXmlApplicationContext,
ClassPathXmlApplicationContext
Application Context 구현 클래스
XmlWebApplicationContext
Spring MVC에서 내부적으로 사용
FileSystemXmlApplicationContext
파일 시스템에 위치한 XML 설정 파일을 로딩하여 구동됨
ClassPathXmlApplicationContext
클래스 패스에 위치한 XML 설정 파일을 로딩하여 구동됨
초기화 방법
ApplicationContext factory =
new ClassPathXmlApplicationContext(
"applicationContext.xml");