2016년 10월 13일 목요일

[자바강의,스프링강의,JPA강의★Topcredu★]#4.Lzay-Loading, Pre-Loading(스프링자바빈로딩)

#4.Lzay-Loading, Pre-Loading(스프링자바빈로딩)

Lzay-Loading, Pre-Loading

스프링에서 자바 빈을 로딩하는 방법은 BeanFactory를 이용 하는 방법과  ApplicationContext 를 이용하는  두가지 방법이 있다.

n  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메소드 호출시 빈이 로드된다.

n  Pre-loading

모든 빈들이 ApplicationContext 컨테이너에 의해 설정파일이 로드될 때 인스턴스로 만들어지고 로드 된다.
ApplicationContext context = new ClassPathXmlApplicationContext(ojc.xml"); // 1 
OracleJavaComm ojc = (OracleJavaComm) factory.getBean("oracleJavaBean"); // 2

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

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

댓글 없음:

댓글 쓰기