如何在Spring中使用@ComponentScan懒洋洋地加载所有bean?

rol*_*lve 15 java spring dependency-injection

我正在使用基于Java的配置来设置我的Spring应用程序上下文,如下所示:

@Configuration
@Lazy
@ComponentScan(basePackageClasses = {MyProject.class, OtherProject.class})
public class MyAppConfig {
    ...
}
Run Code Online (Sandbox Code Playgroud)

在配置中明确定义的Bean会像您期望的那样懒惰地加载.但是,注释的扫描类@Named总是急切地加载.我怎么解决这个问题?

任何帮助表示赞赏.


请注意,对于MyProject包中的类,我也可以通过注释它来解决这个问题@Lazy.但是另一个项目没有依赖Spring,我想保持它(因此@Named而不是@Component).


另请注意,这不会成为基于XML的配置中的问题.目前,设置default-lazy-init="true"<beans>标签接缝处做我想做的(虽然我没有测试过).

Eri*_* S. 18

从版本4.1 RC2开始,此错误已得到修复,您可以使用以下命令完成组件扫描的延迟加载:

@ComponentScan(basePackages = ["..."], lazyInit = true)
Run Code Online (Sandbox Code Playgroud)

https://jira.spring.io/browse/SPR-10459