Spring组件扫描的性能是否取决于扫描包的大小?

Pap*_*ter 10 java spring

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

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

<context:component-scan base-package="foo.bar" />
Run Code Online (Sandbox Code Playgroud)

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

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

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

Evg*_*rov 3

Spring 所做的就是遍历您在组件扫描中提供的包中的所有类,如果该类具有组件、存储库或服务,它就会在上下文中注册一个 bean。所以班级数量很重要。您必须仅扫描包含带注释的类的包(扫描未带注释的类也需要时间)。您还可以仅使用一个组件扫描标签并列出所有软件包。只要不重复,同时使用 xml 和组件扫描就不会有问题。