我正在使用基于 Java 的配置来设置我的 Spring 应用程序上下文,如下所示:
@Configuration
@Lazy
@ComponentScan(basePackageClasses = {MyProject.class, OtherProject.class})
public class MyAppConfig {
...
}
在配置中显式定义的 Bean 会像您期望的那样延迟加载。但是,使用 @Named
注释的扫描类总是急切地加载。我该如何解决这个问题?
感谢任何帮助。
请注意,对于 MyProject
中的类包,我可以通过使用 @Lazy
注释它们来解决这个问题也是。但是另一个项目不依赖于 Spring,我想保持它这样(因此 @Named
而不是 @Component
)。
还要注意,这在基于 XML 的配置中似乎不是问题。在那里,设置 default-lazy-init="true"
在 <beans>
标记接缝做我想做的事(虽然我还没有测试过)。
最佳答案
从 4.1 RC2 版本开始,此错误已修复,您可以通过以下方式完成组件扫描的延迟加载:
@ComponentScan(basePackages = ["..."], lazyInit = true)
关于java - 如何在 Spring 中使用 @ComponentScan 懒惰地加载所有 bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12207057/