programing

lazy-init에 대한 스프링 기본 동작

starjava 2023. 7. 26. 21:31
반응형

lazy-init에 대한 스프링 기본 동작

저는 봄에 초보자입니다, 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는 시작할 때 빈을 만들고 lazy-init=true는 시작할 때 빈을 만들지 않고 특정 빈을 요청하면 빈을 만듭니다.제 해석이 틀렸다면 여기서 고쳐주세요.

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

기본 동작은 false입니다.

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

나는 읽어보기를 제안합니다.

여기에 와서 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"에 세팅은 오직 콩에 의해 설정된 것을 의미합니다.default-lazy-init둘러싸는 콩 요소의 속성입니다.의 암묵적 기본값:default-lazy-init이라false.

없는 경우lazy-init콩에 지정된 속성은 항상 열심히 인스턴스화됩니다.

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

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

default-init 특성이 요소에 lazy-init="default"가 아닌 경우 요소에 lazy-init-"false"처럼 동작합니다.

언급URL : https://stackoverflow.com/questions/15092898/spring-default-behavior-for-lazy-init

반응형