복붙노트

[SPRING] lazy-init에 대한 Spring 기본 동작

SPRING

lazy-init에 대한 Spring 기본 동작

나는 초급부터 봄, ESP 반전 제어. 나는 다음과 같은 차이점을 이해하는 데 의아해했다.

 <bean id="demo" class="Demo" lazy-init="false"/>
 <bean id="demo" class="Demo" lazy-init="true"/>
 <bean id="demo" class="Demo" lazy-init="default"/>

필자의 이해를 돕기 위해 : lazy-init = false는 시작시 bean을 생성하고 lazy-init = true는 시작할 때 bean을 생성하지 않고 특정 bean에 대한 요청시 bean을 생성합니다. 내 해석이 틀린다면 여기에서 나를 정정하십시오.

lazy-init의 기본 동작은 정확히 무엇입니까? 인스턴스화하는 방법은 무엇입니까?

해결법

  1. ==============================

    1.기본 동작은 false입니다.

    기본 동작은 false입니다.

    나는 독서를 제안한다.

  2. ==============================

    2.여기에 와서 Java 설정을 사용하고있는 분들은 다음과 같은 주석을 사용하여 Bean을 lazy-init로 설정할 수 있습니다 :

    여기에 와서 Java 설정을 사용하고있는 분들은 다음과 같은 주석을 사용하여 Bean을 lazy-init로 설정할 수 있습니다 :

    구성 클래스에서 :

    @Configuration
    // @Lazy - For all Beans to load lazily
    public class AppConf {
    
        @Bean
        @Lazy
        public Demo demo() {
            return new Demo();
        }
    }
    

    구성 요소 스캐닝 및 자동 배선의 경우 :

    @Component
    @Lazy
    public class Demo {
        ....
        ....
    }
    
    @Component
    public class B {
    
        @Autowired
        @Lazy // If this is not here, Demo will still get eagerly instantiated to satisfy this request.
        private Demo demo;
    
        .......
     }
    
  3. ==============================

    3.Bean의 lazy-init = "default"설정은 둘러싼 beans 요소의 default-lazy-init 속성에 의해 설정되는 것을 참조합니다. default-lazy-init의 암시 적 기본값은 false입니다.

    Bean의 lazy-init = "default"설정은 둘러싼 beans 요소의 default-lazy-init 속성에 의해 설정되는 것을 참조합니다. default-lazy-init의 암시 적 기본값은 false입니다.

    빈에 지정된 lazy-init 속성이 없다면, 항상 열심히 인스턴스화됩니다.

  4. ==============================

    4.lazy-init은 bean의 속성입니다. lazy-init의 값은 true와 false 일 수 있습니다. lazy-init가 true이면 bean에 대한 요청이있을 때 해당 bean이 초기화됩니다. Spring 컨테이너가 초기화 될 때이 빈은 초기화되지 않는다. 과 lazy-init이 false이면 빈은 스프링 컨테이너 초기화로 초기화 될 것이다.

    lazy-init은 bean의 속성입니다. lazy-init의 값은 true와 false 일 수 있습니다. lazy-init가 true이면 bean에 대한 요청이있을 때 해당 bean이 초기화됩니다. Spring 컨테이너가 초기화 될 때이 빈은 초기화되지 않는다. 과 lazy-init이 false이면 빈은 스프링 컨테이너 초기화로 초기화 될 것이다.

  5. ==============================

    5.요소의 lazy-init = "default"를 속성으로 사용할 때 컨테이너는 요소의 default-lazy-init = "true | false"속성에 지정된 값을 선택하여 lazy-init = "true | false ".

    요소의 lazy-init = "default"를 속성으로 사용할 때 컨테이너는 요소의 default-lazy-init = "true | false"속성에 지정된 값을 선택하여 lazy-init = "true | false ".

    default-lazy-init 속성이 lazy-init = "default"보다 엘리먼트에 없으면 엘리먼트는 lazy-init- "false"처럼 동작합니다.

  6. from https://stackoverflow.com/questions/15092898/spring-default-behavior-for-lazy-init by cc-by-sa and MIT license