2017-10-11 81 views
0

我想了解組件掃描添加應用程序上下文創建的時間。目前,創建應用程序上下文需要大約100秒,我懷疑組件定義的組件掃描是昂貴的。我有一系列的問題如下:組件掃描性能

  1. 如何測量度過組件掃描的總時間?

  2. 基本上下文:組件掃描條目的數量是否會影響搜索空間,我假設組件掃描使用PathMatchingResourcePatternResolver掃描類路徑上的每個條目,然後查找與基本包正則表達式匹配的類。它是更有效的構建中的元數據,如:

<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

    自動掃描類需要掃描指定軟件包中的所有類,並且可能需要很長時間。如果在你的包中幾乎所有的類都被定義爲Bean,那麼可以使用單個組件掃描。

    如果有一些軟件包的類定義爲Bean,那麼肯定只有該軟件包的多組件掃描應該定義以減少自動掃描時間。

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

    否則所有bean在spring配置中定義而不是自動掃描,但它可以增加文件的大尺寸。

    +0

    爲此,您還可以根據您的上下文包含/排除註釋。例如,在Spring MVC上下文中只包含@ * Controller beans。 – voliveira89

    +0

    我認爲Mhod的文章的主旨是通過嘗試只保留與基本包相對應的包中的彈簧託管bean來限制PathMatchingResourcePatternResolverResolver搜索空間,以減少ASM類掃描。這對我有意義。 – toaler