在我们的应用程序中,我们遇到了组件扫描的性能问题。它非常慢,其性能不依赖于扫描包中的类数。
我们的sping配置文件中的每一行都是这样的:
<context:component-scan base-package="foo.bar" />
为我们的应用程序启动时间增加2分钟。扫描包中的类数无关紧要 - 对于包含10和1k类的包,我们遇到相同的延迟。
为什么组件扫描的性能不依赖于扫描包的大小?
我们使用混合方法来创建spring bean - 我们同时使用xml定义和组件扫描。这可能是这种行为的原因吗?
答案 0 :(得分:2)
Spring所做的是遍历组件扫描中提供的包中的所有类 如果类有Component,Repository或Service,它会在上下文中注册一个bean。所以课程的数量很重要。 您只需要扫描包含带注释类的包(扫描非注释类也需要时间)。 此外,您只能使用一个组件扫描标记并列出所有包。只要它们不重复,使用xml和组件扫描应该不是问题。