본문 바로가기
테크/기타

스프링공부 - BeanFactory, ApplicationContext

by ahnne 2013. 11. 9.



※ 참조 : 프로 스프링 3 (위키북스)

http://book.naver.com/bookdb/book_detail.nhn?bid=7014516



○ 스프링의 의존성 주입 컨테이너의 핵심은 BeanFactory 인터페이스이다.


PropertiesBeanDefinitionReader는 프로퍼티 파일에서 빈 정의를 읽고, XmlBeanDefinitionReader는 XML 파일에서 빈 정의를 읽는다.


public class XmlConfigWithBeanFactory {

public static void main(String[] args) {

DefaultListableBeanFactory factory = new DefaultListableBeanFactory();

XmlBeanDefinitionReader rdr = new XmlBeanDefinitionReader(factory);

rdr.loadBeanDefinitions(new FileSystemResource("src/main/resources/xmlBeanFactory.xml"));


Oracle oracle = factory.getBean("oracle", Oracle.class);

}

}


○ Applicationcontext

스프링에서 ApplicationContext 인터페이스는 BeanFactory를 상속한다.

DI 서비스 뿐만 아니라 트랜잭션, AOP서비스,  국제화를 위한 메시지 소스(i18n), 애플리케이션 이벤트 처리 등 다른 서비스도 함께 제공한다.

웹 컨테이너 환경에서는 ContextLoaderListner를 통한 부트스트랩도 지원한다.


○ 스프링 XML 설정

 <?xml version="1.0" encoding="UTF-8"?>  
 <beans:beans xmlns:beans="http://www.springframework.org/schema/beans"  
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
      xmlns:context="http://www.springframework.org/schema/context"  
      xmlns:p="http://www.springframework.org/schema/p"  
      xmlns:c="http://www.springframework.org/schema/c"  
      xmlns:util="http://www.springframework.org/schema/util"  
      xmlns="http://www.springframework.org/schema/mvc"  
      xsi:schemaLocation="  
           http://www.springframework.org/schema/beans   
           http://www.springframework.org/schema/beans/spring-beans-3.1.xsd  
           http://www.springframework.org/schema/context   
           http://www.springframework.org/schema/context/spring-context-3.1.xsd  
           http://www.springframework.org/schema/util  
           http://www.springframework.org/schema/util/spring-util-3.1.xsd  
           http://www.springframework.org/schema/mvc  
           http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"  
           >  
      <!-- 스프링이 코드 기반에서 의존성 요구 조건을 스캔하게 함 -->  
      <context:annotation-config />  
      <!-- 스프링이 코드에서 지정된 패키지 아래에 있는 주입 가능한 빈을 모두 스캔하게 함 -->  
      <context:component-scan base-package="com.sptr.user" />  

 </beans:beans>