3

Spring 需要大约 5 到 10 秒来自行配置它,我使用 XML 进行基础设施 bean,并使用注释进行组件扫描以用于其他所有内容。

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

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

4

1 回答 1

3

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

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

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

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

于 2012-08-01T11:51:43.630 回答