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/