Spring (3.2.3) - Beans (7): 지연 실례 화

4945 단어 spring
기본적으로 Spring IoC 용기 가 시 작 된 후 초기 화 과정 에서 싱글 모드 로 singleton 정 의 를 사용 하 는 모든 Bean 의 인 스 턴 스 를 만 들 고 설정 합 니 다.통상 적 인 상황 에서 Bean 을 미리 예화 하 다. 설정 에 있 는 모든 오류 가 빨리 발견 되 기 때문에 바람 직 합 니 다. 그렇지 않 으 면 몇 시간, 심지어 며칠 후에 야 발 견 될 수 있 습 니 다. 가끔 ApplicationContext 초기 화 할 때 어떤 것 을 미리 예화 합 니 다. singleton 정의 Bean, 그럼 고 칠 수 있어 요. Bean 지연 실례 화로 설정 합 니 다.지연 실례 화 Bean 처음 요청 을 받 았 을 때, Spring 용기 만 들 기 Bean 용기 가 시 작 될 때 가 아니 라 인 스 턴 스 입 니 다.
Spring 프로필 에서 < bean / > 요 소 를 설정 합 니 다. lazy - init 속성의 값 이 true 이면 이 Bean 은 지연 실례 화 된 것 으로 정의 합 니 다.모든 singleton Bean 은 모두 정례 화 를 지연 시 키 는 것 이 아니다.기본 적 인 상황 에서 모든 것 을 singleton Bean 은 모두 지연 실례 화 되 어 있 습 니 다. Spring 프로필 의 루트 요소 < beans / > 의 default - lazy - init 속성 값 을 true 로 설정 합 니 다.
 
지연 실례 화 예시
Bean 의 정의:
package com.huey.dream.bean;



public class ExampleBean {    

    public ExampleBean(String type) {

        System.out.println("In ExampleBean Constructor, Bean type is " + type);

    }

}

Bean 의 설정:
<bean id="eb1" class="com.huey.dream.bean.ExampleBean" lazy-init="true" >

    <constructor-arg name="type" value="lazyInitBean"/>

</bean>



<bean id="eb2" class="com.huey.dream.bean.ExampleBean">

    <constructor-arg name="type" value="eagerInitBean"/>

</bean>

테스트 방법:
@Test

public void testLazyInit() throws Exception {

    System.out.println("ApplicationContext      !");

    ApplicationContext appCtx = 

        new ClassPathXmlApplicationContext("applicationContext.xml");

    System.out.println("ApplicationContext      !");

    

    ExampleBean eb1 = appCtx.getBean("eb1", ExampleBean.class);

    ExampleBean eb2 = appCtx.getBean("eb2", ExampleBean.class);

}

결과 출력:
ApplicationContext      !

2015-5-16 16:02:58 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh

  : Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@1fddc31: startup date [Sat May 16 16:02:58 CST 2015]; root of context hierarchy

2015-5-16 16:02:58 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions

  : Loading XML bean definitions from class path resource [applicationContext.xml]

2015-5-16 16:02:59 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons

  : Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@b1cc87: defining beans [eb1,eb2]; root of factory hierarchy

In ExampleBean Constructor, Bean type is eagerInitBean

ApplicationContext      !

In ExampleBean Constructor, Bean type is lazyInitBean

좋은 웹페이지 즐겨찾기