10

在我们的应用程序中,我们遇到了组件扫描的性能问题。它非常慢,其性能不依赖于扫描包中的类数。

我们的 sping 配置文件中的每一行都是这样的:

<context:component-scan base-package="foo.bar" />

我们的应用程序的启动时间增加了 2 分钟。扫描包中的类数无关紧要 - 对于具有 10 个和 1k 个类的包,我们都遇到了相同的延迟。

为什么组件扫描的性能不依赖于扫描包的大小?

我们使用混合方法来创建 spring bean - 我们使用 xml 定义和组件扫描。这可能是这种行为的原因吗?

4

1 回答 1

3

Spring 所做的是遍历您在组件扫描中提供的包中的所有类,如果该类具有 Component、Repository 或 Service,它会在上下文中注册一个 bean。所以课程的数量很重要。您必须只扫描包含注释类的包(扫描非注释类也需要时间)。您也可以只使用一个组件扫描标签并列出所有包。只要不重复,同时使用 xml 和组件扫描应该不是问题。

于 2013-10-11T11:39:29.757 回答