2015년 7월 14일 화요일

스프링 자바빈로딩방법2가지(Lazy-Loading, Pre-Loading, BeanFactory,ApplicationContext )

스프링 자바빈로딩방법2가지(Lazy-Loading, Pre-Loading, BeanFactory,ApplicationContext )

스프링프레임워크에서는 자바빈을 인스턴스로 만든 후 로딩하는 하는 방법이 두가지 이다. BeanFactory를 사용하느냐 ApplicationContext containers를 사용하느냐에 따라서...

1. Lazy-Loading

메소드나 클래스가 요청을 받는 시점에 자바빈의 인스턴스를 만들고 로딩하는 방법이다.

BeanFactory factory = new XmlBeanFactory(
                        new InputStreamResource(
                        new FileInputStream("oraclejavacommunity.xml"))); // 1
OracleJavaComm ojc = (OracleJavaComm) factory.getBean("oracleJavaBean"); // 2

1번에서 BeanFactory 컨테이너에 의해 oraclejavacommunity.xml 파일이 로드되더라도 어떠한 빈도 인스턴스화 되지 않고 2번에서 oracleJavaBean이 요청을 받는시점에 인스턴스화 되고 로드된다. 즉 getBean메소드 호출시 빈이 로드되는 것이다.

2. Pre-loading

모든 빈들이 스프링 설정파일이 ApplicationContext 컨테이너에 의해 로드될 때 인스턴스로 만들어지고 로드된다.

ApplicationContext context =
            new ClassPathXmlApplicationContext("oraclejavacommunity.xml"); // 1 
OracleJavaComm ojc = (OracleJavaComm) factory.getBean("oracleJavaBean"); // 2

1번에서 모든 싱글톤 빈들이 인스턴스화 된다. 그러므로 빈이 여러개라면 시간이 소요될 것이다. 2번에서는 미리 컨테이너에서 만들어진 빈들이 클라이언트로 리턴된다.

[결론]
스프링 설정파일에 여러개의 자바빈이 정의되었다고 모두 자주 사용되는 것은 아닐 수 있다. 모두 자주 사용되지 않을수도 있으니 이러한 경우라면 요청이 있을 때 자바빈을 인스턴스로 만드는 것이 좋을 것이다. 물론 모두 자주 사용되는 빈이라면 한번에 로드하는 것도 좋은 방법이다.

댓글 없음:

댓글 쓰기