IT TIP

lazy-init에 대한 Spring 기본 동작

itqueen 2021. 1. 6. 20:37
반응형

lazy-init에 대한 Spring 기본 동작


나는 초보자부터 봄까지 ESP Inversion of control입니다. 나는 다음의 차이점을 이해하고 당황했습니다.

 <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는 시작시 빈을 생성하고 lazy-init = true는 시작시 빈을 생성하지 않고 특정 빈에 대한 요청시 빈을 생성합니다. 내 해석이 잘못된 경우 여기에서 정정하십시오.

lazy-init의 기본 동작은 정확히 무엇입니까? 어떻게 인스턴스화됩니까?


기본 동작은 false입니다.

기본적으로 ApplicationContext 구현은 초기화 프로세스의 일부로 모든 싱글 톤 Bean을 열심히 만들고 구성합니다. 일반적으로 구성 또는 주변 환경의 오류가 몇 시간 또는 며칠 후가 아니라 즉시 발견되기 때문에 이러한 사전 인스턴스화가 바람직합니다. 이 동작이 바람직하지 않은 경우 Bean 정의를 lazy-initialized로 표시하여 싱글 톤 Bean의 사전 인스턴스화를 방지 할 수 있습니다. lazy-initialized bean은 시작 시가 아니라 처음 요청 될 때 IoC 컨테이너에 bean 인스턴스를 만들도록 지시합니다.

나는 읽는 것이 좋습니다


여기에 와서 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;

    .......
 }

lazy-init="default"A의 설정 빈은 단지 설정 무엇을 의미 default-lazy-init바깥 쪽의 속성 요소입니다. 암시 적 기본값은 default-lazy-init입니다 false.

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


lazy-init는 bean의 속성입니다. lazy-init의 값은 true 및 false 일 수 있습니다. lazy-init이 true이면 Bean에 요청이있을 때 해당 Bean이 초기화됩니다. 이 빈은 스프링 컨테이너가 초기화 될 때 초기화되지 않으며 lazy-init가 거짓 이면 빈은 스프링 컨테이너 초기화로 초기화됩니다.


When we use lazy-init="default" as an attribute in element, the container picks up the value specified by default-lazy-init="true|false" attribute of element and uses it as lazy-init="true|false".

If default-lazy-init attribute is not present in element than lazy-init="default" in element will behave as if lazy-init-"false".

ReferenceURL : https://stackoverflow.com/questions/15092898/spring-default-behavior-for-lazy-init

반응형