Spring需要大约5到10秒来自行配置,我使用XML进行基础架构bean,并使用注释进行组件扫描。
Spring JavaConfig是否消除了对组件扫描的需求以及按类型自动连接bean所发生的所有反射?有没有人看到JavaConfig的启动时间有所改善?
我主要担心的是加快集成测试。
答案 0 :(得分:3)
如果您继续使用@ComponentScan
,显然您将看不到任何改进,因为相同的扫描将会发生,您只是使用不同的格式启用它。
另一方面,如果您使用@Bean
注释定义所有bean并通过调用其他@Bean
方法手动执行连接 - 那么,您将避免组件扫描成本,但这会带回来到90年代,除了你交换XML for Java(一种改进)。还要记住Java配置也有一些成本。每个@Configuration
类都需要CGLIB代理,原因超出了本问题的范围。
我通常做的是将@Bean
用于基础架构bean(我无法控制)和@ComponentScan
用于其他所有内容。您确定组件扫描导致延迟而不是Hibernate或其他第三方库启动时间吗?如果它正在扫描,那么,您正在交换启动时间,以便开发人员感到舒适(无需手动手动声明/连接所有内容)。
当然,有一些方法可以减少组件扫描时间,主要是仔细过滤包/类名,以便只扫描相关的类。