#3.빈팩토리,어플리케이션컨텍스트
BeanFactory, ApplicationContext
n BeanFactory
- 스프링의 의존성 주입의 핵심 인터페이스
- Bean의 생성과 소멸 담당(의존성과 생명주기 및 관리 담당), 객체를 관리하는 고급 설정 기법 제공
- DI 지원 기능만 필요하다면 BeanFactory 인터페이스를 이용해 스프링 DI 컨테이너와 직접 연동할 수 있다. 이 경우 애플리케이션은 BeanFactory 인터페이스를 구현한 클래스의 인터페이스를 생성하고 이 인스턴스에 빈과 의존성 설정 정보를 저장해야 한다.
- BeanFactory를 프로그래밍적으로 설정할 수도 있지만 대부분 설정 파일을 통해 외부에서 설정하는 방식을 사용한다.
- 스프링에서 기본적으로 제공하는 두개의 메인 BeanFactory는 BeanDefinitionRegistry를 구현하고 있다. PropertiesBeanDefinitionReader는 프로퍼티 파일에서 Bean정의를 읽고 XmlBeanDefinition Reader는 XML 파일에서 Bean정의를 읽는다.
n ApplicationContext
- BeanFactory의 모든 기능 제공(BeanFactory 인터페이스를 상속)
- 권장하는 방식으로 스프링 DI 뿐 아니라 트랜잭션, AOP 서비스, 국제화를 위한 메시지 소스, 애플리케이션 이벤트 처리
- Spring Framework2.5 이상부터 ApplicationContext 설정시 자바 어노테이션을 지원
- XML ? Annotation 방식
XML 설정 방식을 쓰면 모든 설정을 자바코드로 부터 외부 XML에 둠
어노테이션 방식의 경우 자바코드 내에서 DI 설정을 정의
둘 동시에 사용되는 경우 XML 설정이 우선
주로 데이터소스, 트랜잭션매니저, JMX, JMS커넥션팩터리등 애플리케이션
- 인프라스트럭처에는 XML 파일에 저장하고 DI 설정은 어노테이션에서 정의.
- Context 시작 시 모든 Singleton Bean을 미리 로딩(preloading) 시킴-> 초기에 설정 및 환경에 대한 에러 발견 가능함
- 다수의 ApplicationContext 구현 클래스 제공, 다양한 Resource 로딩 방법 제공
(XmlWebApplicationContext,FileSystemXmlApplicationContext,ClassPathXmlApplicationContext)
- Spring의 AOP기능, 메시지 자원 핸들링, 이벤트 위임, 웹 어플리케이션에서 사용하기 위한 WebApplicationContext와 같은 특정 어플리케이션 컨텍스트를 이용한 통합과 같은 다른 기능을 추가 제공한다
댓글 없음:
댓글 쓰기