Spring JavaConfig是否避免了组件扫描&改善启动时间?

时间:2012-08-01 11:41:11

标签: java spring

Spring需要大约5到10秒来自行配置,我使用XML进行基础架构bean,并使用注释进行组件扫描。

Spring JavaConfig是否消除了对组件扫描的需求以及按类型自动连接bean所发生的所有反射?有没有人看到JavaConfig的启动时间有所改善?

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

1 个答案:

答案 0 :(得分:3)

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

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

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

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