[SPRING] Spring에서 @ComponentScan으로 모든 bean을 느리게로드하는 방법?
SPRINGSpring에서 @ComponentScan으로 모든 bean을 느리게로드하는 방법?
Java 기반 설정을 사용하여 Spring 애플리케이션 컨텍스트를 다음과 같이 설정한다.
@Configuration
@Lazy
@ComponentScan(basePackageClasses = {MyProject.class, OtherProject.class})
public class MyAppConfig {
...
}
구성에서 명시 적으로 정의 된 빈은 예상 한 것처럼 느리게로드됩니다. 그러나 @Named로 주석 된 스캔 된 클래스는 항상 열심히로드됩니다. 어떻게 해결할 수 있습니까?
어떤 도움을 주셔서 감사합니다.
MyProject 패키지의 클래스의 경우 @Lazy로 주석을 달아서이 문제를 해결할 수 있습니다. 하지만 다른 프로젝트는 Spring에 대한 의존성이 없기 때문에 그렇게 유지하고 싶습니다 (따라서 @Component가 아닌 @Named).
또한 XML 기반 구성에서이 점이 문제가되지는 않습니다. 거기서,
해결법
-
==============================
1.버전 4.1 RC2에서이 버그가 수정되었으며 다음을 사용하여 구성 요소 검사에서 지연로드를 수행 할 수 있습니다.
버전 4.1 RC2에서이 버그가 수정되었으며 다음을 사용하여 구성 요소 검사에서 지연로드를 수행 할 수 있습니다.
@ComponentScan(basePackages = ["..."], lazyInit = true)
https://jira.spring.io/browse/SPR-10459
-
==============================
2.앞에서 말한 것처럼 직접 처리 할 방법은 없습니다 (구성 클래스에서 @Lazy 사용). 하지만이 방법으로 시도해 볼 수 있습니다.
앞에서 말한 것처럼 직접 처리 할 방법은 없습니다 (구성 클래스에서 @Lazy 사용). 하지만이 방법으로 시도해 볼 수 있습니다.
OtherProject는 Spring을 사용하지 않는 프로젝트이며,이 클래스에 주석이 없다고 가정합니다.
그런 다음 Myproject에서 다음과 같은 구성을 정의해야합니다.
@Configuration // Avoid use this line if classes aren't annotated @ComponentScan("com.otherProject") public class MyProjectConfig { @Bean(name = "lazyBean") @Lazy public LazyBean lazyBean(){ System.out.println("Loading LazyBean bean"); return new LazyBean(); // Or use a static method factory, this is only an example } }
이것을 사용하면 bean "lazyBean"은 어떤 인스턴스가 인스턴스를 삽입 할 때 또는 명시 적으로 호출 할 때 생성되지만 초기화시에는 생성되지 않습니다.
사용하려는 클래스마다 새 빈을 정의해야하므로 클래스 수가 많지만 다른 프로젝트의 클래스에 대한 액세스 가능성을 최소화하는 것이 좋지는 않습니다 (모든 클래스가 필요하지는 않음) .
이게 도움이 되길 바란다.
from https://stackoverflow.com/questions/12207057/how-to-load-all-beans-lazily-with-componentscan-in-spring by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring 데이터 나머지로 resourceId를 노출하는 방법 (0) | 2019.01.22 |
---|---|
[SPRING] 봄 IDREF 사용법 (0) | 2019.01.22 |
[SPRING] mybatis 봄 mvc 응용 프로그램 가져 오기, 잘못된 바인딩 된 문 (찾을 수 없습니다) (0) | 2019.01.22 |
[SPRING] 응답을 추출 할 수 없습니다 : 응답 유형에 적합한 HttpMessageConverter가 없습니다. (0) | 2019.01.22 |
[SPRING] 스프링 빈 파괴 메소드, 싱글 톤 및 프로토 타입 스코프 (0) | 2019.01.22 |