我正在尝试了解组件扫描添加应用程序上下文创建的时间。目前,创建应用程序上下文需要大约100秒,我怀疑组件定义的组件扫描成本很高。我有一系列问题如下:
如何衡量组件扫描所用的总时间?
基本上下文:组件扫描条目的数量是否会影响搜索空间,我假设组件扫描使用PathMatchingResourcePatternResolver扫描类路径上的每个条目,然后查找与base-package正则表达式匹配的类。构建元数据更有效:
<context:component-scan base-package="foo" />
<context:component-scan base-package="bar" />
<context:component-scan base-package="baz" />
或
<context:component-scan base-package="foo, bar, baz" />
我还假设PathMatchingResourcePatternResolver影响组件扫描的类数量,因为检查相应的组件注释需要检查类文件。因此,在一个定义良好的包中保留带注释的类以减少要检查的数字类是不错的做法?
是否列出了已知的最佳实践,以便在设计中考虑哪些因素以获得最佳的组件扫描性能?
答案 0 :(得分:1)
自动扫描类需要扫描指定包中的所有类,并且可能需要很长时间。如果在您的包中几乎所有类都定义为Bean,那么可以使用单组件扫描。
如果某些包中的类被定义为Bean,那么只有那些包的多组件扫描应该定义以减少自动扫描时间。
<context:component-scan base-package="foo" />
<context:component-scan base-package="bar" />
<context:component-scan base-package="baz" />
否则所有bean都在spring配置中定义而不是自动扫描,但它可以增加文件的大小。