스프링 자바빈로딩방법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번에서는 미리 컨테이너에서 만들어진 빈들이 클라이언트로
리턴된다.
[결론]
스프링 설정파일에 여러개의 자바빈이 정의되었다고
모두 자주 사용되는 것은 아닐 수 있다. 모두 자주 사용되지 않을수도 있으니 이러한 경우라면 요청이 있을 때 자바빈을 인스턴스로 만드는 것이
좋을 것이다. 물론 모두 자주 사용되는 빈이라면
한번에 로드하는 것도 좋은 방법이다.
댓글 없음:
댓글 쓰기