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

标签 java spring dependency-injection

我正在使用基于 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)

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

关于java - 如何在 Spring 中使用 @ComponentScan 懒惰地加载所有 bean?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12207057/

相关文章:

security - 我应该如何保护使用 Wicket、Spring 和 JPA 编写的 web 应用程序?

java - 如何在 @ComponentScan 中定义另一个模块中 java 类的路径?

java - 如何使用 Firebase 中的网站用户注册详细信息通过 Android 应用程序登录用户?

java - 使用 Java 写入文本文件,覆盖测试用例的输出

java - 如何将类级别验证映射到特定字段?

javafx - 传递参数JavaFX FXML

java - Spring构造函数注入(inject)和 super 调用冗长

Angular 2在构造函数外注入(inject)依赖

java - 在 Java 中使用 for 循环将元素从一个列表转移到另一个列表

java - 类文件 javax/faces/webapp/FacesServlet 中非 native 或抽象方法中缺少代码属性