springboot多模組包掃描問題的解決方法
問題描述:
springboot建立多個模組,當一個模組需要使用另一個模組的服務時,需要注入另一個模組的元件,如下面圖中例子:
memberservice模組中的MemberServiceApiImpl類需要注入common模組中的RedisService元件,該怎麼注入呢?
解決:
在memberservice模組的啟動類上加上RedisService類所在包的全路徑的元件掃描,就像這樣:
注意啟動類上方的註解@ComponentScan(basePackages={“com.whu.commom.redis”}),這一句實際上就已經加上了RedisService的元件掃描,但是這樣做是有問題的,我發現啟動後服務不能正常訪問。查詢資料後發現是因為@ComponentScan 和@SpringBootApplication註解的包掃描有衝突,@ComponentScan註解包掃描會覆蓋掉@SpringBootApplication的包掃描。解決辦法就是在@ComponentScan(basePackages={“com.whu.commom.redis”})的基礎上加上@SpringBootApplication掃描的包,那麼@SpringBootApplication掃描了哪些包呢?實際上,它預設掃描的是啟動類所在的包及其子包,所以我的例子上需要改成@ComponentScan(basePackages={“com.whu.commom.redis”,“com.whu.memberservice”}). OK ,結束!!
到此這篇關於springboot多模組包掃描問題的解決方法的文章就介紹到這了,更多相關springboot多模組包掃描內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!