#4.Lzay-Loading, Pre-Loading(스프링자바빈로딩)
Lzay-Loading, Pre-Loading
스프링에서 자바 빈을 로딩하는 방법은 BeanFactory를
이용 하는 방법과 ApplicationContext 를 이용하는
두가지 방법이 있다.
<!--[if !supportLists]-->n
<!--[endif]-->Lazy-Loading
메소드나 클래스가 요청을 받는 시점에 자바빈의 인스턴스를 만들고 로딩하는 방법이다.
BeanFactory factory = new
XmlBeanFactory( new InputStreamResource(
new
FileInputStream(“ojc.xml"))); // 1
OracleJavaComm ojc = (OracleJavaComm)
factory.getBean("oracleJavaBean"); // 2
1번에서 BeanFactory 컨테이너에 의해 ojc.xml 파일이 로드되더라도 어떠한 빈도 인스턴스화 되지 않고 2번에서 oracleJavaBean이 요청을 받는시점에 인스턴스화 되고 로드된다. 즉 getBean메소드 호출시 빈이 로드된다.
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
<!--[if !supportLists]-->n
<!--[endif]-->Pre-loading
모든 빈들이 ApplicationContext 컨테이너에
의해 설정파일이 로드될 때 인스턴스로 만들어지고 로드 된다.
ApplicationContext context = new
ClassPathXmlApplicationContext("ojc.xml"); //
1
OracleJavaComm ojc = (OracleJavaComm)
factory.getBean("oracleJavaBean"); // 2
1번에서 모든 싱글톤 빈들이 인스턴스화 된다. 그러므로 빈이 여러 개라면 시간이 소요될 것이다. 2번에서는 미리
컨테이너에서 만들어진 빈들이 클라이언트로 리턴된다.
스프링 설정파일에 여러개의 자바빈이 정의되었다고 모두 자주 사용되는 것은 아닐 수 있다. 모두 자주 사용되지 않을 수도 있으니 이러한 경우라면 요청이 있을 때 자바 빈을 인스턴스로 만드는 것이 좋을
것이다. 물론 모두 자주 사용되는 빈이라면 한번에 로드 하는 것도 좋은 방법이다.
댓글 없음:
댓글 쓰기