註解方式定義的spring component打jar後,掃描失敗的可能原因
阿新 • • 發佈:2019-02-10
情況是這樣的:web工程採用了ssh框架,dao和service都是通過annotation方式注入的,工程執行正常。後來把service和dao打成jar放在工程的lib目錄下,問題來了,配置沒改動,結果就是不能自動注入dao和service。但是如果把dao和service在spring配置檔案中通過xml檔案配置,這些component能找到。
搜尋了一把,發現這個問題比較常見,大部分帖子說的是在打jar包的時候add entity directory,仔細看了下,我的jar包是通過maven打包的,entity directory都在,所以我的問題不是這個。那問題就可能是spring context掃描包的路徑不對。
幾經周折,發現stackoverflow上有人說需要在
<context:component-scanbase-package="tr"/>這個配置裡,加一級目錄,即沒打jar包的時候是前面說的配置,如果打了jar包,就應該是
<context:component-scanbase-package="main.tr"/>,添加了之後發現component自動注入了。
補充一句,我的工程是maven工程。