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
'IT TIP' 카테고리의 다른 글
총 잠금 수가 잠금 테이블 크기를 초과합니다. (0) | 2021.01.07 |
---|---|
django rest_framework에 인증 헤더가 없습니다. 아파치가 비난받을까요? (0) | 2021.01.06 |
자바에서 jmap을 사용하여 힙 덤프를 분석하는 방법 (0) | 2021.01.06 |
배열, 고정 크기 배열 및 배열의 기본 주소를 함수 매개 변수로 전달하는 것의 차이점 (0) | 2021.01.06 |
Java의 입력 텍스트에서 구두점을 제거하려면 어떻게해야합니까? (0) | 2021.01.06 |