java - Spring JavaConfig 是否避免组件扫描并改善启动时间?

标签 java spring

Spring 大约需要 5 到 10 秒来自行配置,我将 XML 用于基础结构 bean,并使用带有注释的组件扫描来处理其他所有内容。

Spring JavaConfig 是否消除了组件扫描的需要以及按类型 Autowiring bean 时发生的所有反射?有没有人发现使用 JavaConfig 可以缩短启动时间?

我主要关心的是加快集成测试。

最佳答案

如果您继续使用 @ComponentScan ,显然您不会看到任何改进,因为将进行相同的扫描,您只是使用不同的格式启用它。

另一方面,如果您使用 @Bean 注释定义所有 bean 并通过调用其他 @Bean 方法手动执行连接 - 那么,您将避免组件扫描成本,但这会让您回到 90 年代,只是您将 XML 换成了 Java(某种改进)。还要记住,Java 配置也有一些成本。由于超出此问题范围的原因,每个 @Configuration 类都需要 CGLIB 代理。

我通常做的是将 @Bean 用于基础结构 bean(我无法控制),将 @ComponentScan 用于其他所有内容。您确定是组件扫描导致延迟,而不是 Hibernate 或其他第三方库启动时间吗?如果它正在扫描,那么,您正在用启动时间换取开发人员的舒适度(无需手动声明/手动连接所有内容)。

当然有一些方法可以减少组件扫描时间,主要是仔细过滤包/类名,以便只扫描相关类。

关于java - Spring JavaConfig 是否避免组件扫描并改善启动时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11758447/

相关文章:

java - Hibernate:org.hibernate.hql.internal.ast.QuerySyntaxException:意外标记:(第 1 行附近,第 6 列...)

java - Spring Security jsp 授权标签不起作用

java - Spring集成测试-配置中的事务声明似乎破坏了测试

java - 在类路径中找不到 META-INF/persistence.xml

java - 如何为运行最新操作系统 Sierra 的 iMac 安装和设置 Java 语音 (jsapi)?

spring - 将 Spring 请求范围与 JSF Controller 集成

java - jsp渲染后的AOP切入点

Spring Boot SSL 客户端

java - Spring MVC @RequestMapping 参数问题

java - 如何用循环解决图形