[SPRING] lazily 초기화 된 CDI 빈을 만드는 방법은?
SPRINGlazily 초기화 된 CDI 빈을 만드는 방법은?
나는 CDI 1.0의 Weld 구현을 사용하고 있으며 Spring에서 lazy와 같은 방법을 찾을 수 없다 (XML에서 @Lazy 또는 Lazy-init 사용). 시작시 Bean을 초기화하지 않도록 CDI의 Injector에게 알려주는 방법이 있습니까?
해결법
-
==============================
1.아닙니다. CDI에서는 불가능합니다. 당신이 얻을 수있는 가장 가까운 것은 프록시를 제공하는 새로운 InjectionPoint (Extension 사용) 구현체를 생성하는 것이며 프록시는 첫 번째 메소드 호출시 모든 것을 초기화합니다.
아닙니다. CDI에서는 불가능합니다. 당신이 얻을 수있는 가장 가까운 것은 프록시를 제공하는 새로운 InjectionPoint (Extension 사용) 구현체를 생성하는 것이며 프록시는 첫 번째 메소드 호출시 모든 것을 초기화합니다.
-
==============================
2.내 대답보기 : http://www.adam-bien.com/roller/abien/entry/lazy_injection_with_javax_inject
내 대답보기 : http://www.adam-bien.com/roller/abien/entry/lazy_injection_with_javax_inject
사용
@Inject Instance<MyObject> object;
빈은 필요할 때만 초기화됩니다 ... 당신이 원하는 것이 아닙니다.
-
==============================
3.주입중인 bean이 정상적인 범위 (@SessionScoped, @RequestScoped 등)에 있다면, 느리게 인스턴스화됩니다. 클라이언트 빈에서 얻는 것은 처음으로 프록시에서 메소드를 호출 할 때까지 구체 인스턴스를 가리 키지 않는 프록시입니다.
주입중인 bean이 정상적인 범위 (@SessionScoped, @RequestScoped 등)에 있다면, 느리게 인스턴스화됩니다. 클라이언트 빈에서 얻는 것은 처음으로 프록시에서 메소드를 호출 할 때까지 구체 인스턴스를 가리 키지 않는 프록시입니다.
다른 사람들이 이미 지적했듯이, @Inject Instance
myBeanInstance; 명시 적으로 게으른 인스턴스화를 설정하는 데 사용할 수도 있습니다.
from https://stackoverflow.com/questions/12630508/how-to-make-a-cdi-bean-lazily-initialized by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 생성시 기본 생성자가 필요합니까? (0) | 2019.04.20 |
---|---|
[SPRING] Spring 부트 프로젝트에서 Hibernate가 LazyInitializationException을 던지지 않는다. (0) | 2019.04.20 |
[SPRING] Guice 컴포넌트를 Spring 애플리케이션에 통합 (0) | 2019.04.20 |
[SPRING] Intellij, 스프링 개발 도구 원격, Docker, error 예기치 않은 404 응답 업로드 클래스 파일 (0) | 2019.04.20 |
[SPRING] SpringTemplate 응답 유형에 적합한 HttpMessageConverter가 없습니다. (0) | 2019.04.20 |