Where The Streets Have No Name

Spring 설정 파일 로딩 본문

Developement/Java

Spring 설정 파일 로딩

highheat 2008. 3. 14. 12:41

참고 : http://www.ibm.com/developerworks/kr/library/wa-spring1/

import org.springframework.context.support.ClassPathXmlApplicationContext;
.
.
.
ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext(new String[] {
     "springexample-creditaccount.xml"
    });

CreateCreditCardAccountInterface creditCardAccount = (CreateCreditCardAccountInterface)                                        appContext.getBean("createCreditCard");



import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
.
.
.
String[] configs = { "com/testcompamy/testpg/springexample-creditaccount.xml" };
ApplicationContext context = new ClassPathXmlApplicationContext(configs);
WriteTestService service = (WriteTestService) context.getBean("writeTestService");
service.write(new Test());

참고 : http://www.dbtool.co.kr/board/board_view.jsp?leftmenu=0&no=2554&topmenu=3

2. 애플리케이션 컨텍스트

 

 표면적으로는 ApplicationContext BeanFactory 상당히 비슷하다. 빈을 로딩하고 빈들을 묶어주며, 요청에 따라 빈을 분배한다. , ApplicationContext 인터페이스가 BeanFactory 인터페이스를 확장한 것이다. 또한 getBean() 메소드를 사용해 ApplicationContext 로부터 빈을 얻을 있다.

차이점은 팩토리는 모든 빈을 늦게 로딩(lazy loading)하는데, 애플리케이션 컨텍스트는  컨텍스트를 시작시킬때 모든 싱클톤 빈을 미리 로딩(preloading)함으로써 빈이 필요할때 즉시 사용될수 있도록 보장해 준다. , 빈이 생성되기를 기다릴 필요가 없다는 것이다.

하지만 모든 객체를 싱클톤으로 생성해 놓는다지만 객체가 많아지면 무거울꺼라는 생각이 든다. 해보지 않아서 추측임.

(싱클톤은 디자인패턴의 일종이다 스스로…. ^^)

 

 ApplicationContext 다음과 같은 추가기능을 제공한다.

 -.국제화(I18N) 지원을 포함해 텍스트 메시지를 해석하는 수단 제공

 -.이미지 등과 같은 자원을 로딩하는 범용적인 방법 제공

 -.리스너로 등록되어있는 빈에 이벤트를 발생할 있음.

 

 BeanFactory 자원이 제약이 따르는 이동통신기기 같은 상황이 아니면 ApplicationContext 사용한다고 한다.

 

ApplicationContext 다양한 구현 클래스 일반적인

 -.ClasspathXmlApplicationContext : 클래스 패스에 있는 XML 파일로부터 컨텍스트 정의를 로딩하며, 컨텍스트 정의를 클래스 패스에 있는 자원으로 취급한다.

 -.FileSystemXmlApplicationContext : 파일 시스템에 있는 XML 파일로부터 컨텍스트 정의를 로딩한다.

 -.XmlWebApplicationContext : 애플리케이션에 포함되어있는 XML 파일로부터 컨텍스트 정의를 로딩한다.

 

) ApplicationContext context = new FileSystemXmlApplicationContext("c:/foo.xml");

    : 특정한 위치에서 foo.xml 찾음.

     ApplicationContext context = new ClassPathXmlApplicationContext("c:/foo.xml");

    : 클래스 패스에 있는 foo.xml 찾음.