解決SpringBoot引用別的模塊無法註入的問題

引用別的模塊無法註入的問題

前段時間嘗試著利用空閑時間搭建瞭一個IIM消息通信系統,目前還是Demo級別,具體實現還在不斷補充,在開發過程中遇到瞭一個小問題,在此分享出來,猛男請忽略。

問題描述

由於前期搭建的比較匆忙,擱那狂寫調用邏輯,沒註意自己的包名有點奇怪。

目前是分為這三個模塊,客戶端,公共處理模塊,服務端,不過我正在琢磨著給這玩意再整個路由註冊中心,便於客戶端和服務端的橫向拓展。

目前我server子模塊的包名和common子模塊的包路徑如下

我在service包裡的類裡引用common包下的公共類時,發現無法註入我的消息分發器公共類;

emmmmm…以前自己配置過XML的包掃描,沒試過註解的掃描。

解決方法

1.在啟動類**@SpringBootApplication**加參數 ,掃描指定的包

@SpringBootApplication(scanBasePackages = {“com.zhl.dispatcher”,“server.server”})

這裡也包括其他模塊的包,掃描到包及子包的類。加載進Spring的容器當中。

2.新增註解

@ComponentScan(value = {“com.zhl.dispatcher”,“server.server”})

第二種其實這個註解是有些多餘,@SpringBootApplication本身就已經包含掃描包路徑的屬性瞭,不過這兩種方法都可以用哦

多模塊項目中無法註入其他模塊的spring bean

在一個springboot項目中創建瞭一個common模塊,一個admin模塊,

在admin模塊中引入common模塊依賴,發現無法註入common模塊中的bean,idea提示無法找到bean。

瞎忙活一晚上,最後發現是兩個模塊路徑不同意,一個是com.example.common,另一個是com.example.admin。

這是因為springboot的@SpringBootApplication註解默認掃描范圍為自己的啟動類所在的包(com.example.admin)及其子包,所以此時模塊admin並沒有掃描到模塊common的bean,那麼自然無法在模塊admin中註入模塊common的Service類。

最後:

方法一:都改成com.example就好瞭。

方法二:手動修改成導入多個包,@SpringBootApplication(scanBasePackages = {“com.example.admin”, “com.example.common”})

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: