解決SpringBoot引用別的模塊無法注入的問題
引用別的模塊無法注入的問題
前段時間嘗試著利用空閑時間搭建了一個IIM消息通信系統(tǒng),目前還是Demo級別,具體實(shí)現(xiàn)還在不斷補(bǔ)充,在開發(fā)過程中遇到了一個小問題,在此分享出來,猛男請忽略。
問題描述
由于前期搭建的比較匆忙,擱那狂寫調(diào)用邏輯,沒注意自己的包名有點(diǎn)奇怪。
目前是分為這三個模塊,客戶端,公共處理模塊,服務(wù)端,不過我正在琢磨著給這玩意再整個路由注冊中心,便于客戶端和服務(wù)端的橫向拓展。
目前我server子模塊的包名和common子模塊的包路徑如下
我在service包里的類里引用common包下的公共類時,發(fā)現(xiàn)無法注入我的消息分發(fā)器公共類;
emmmmm…以前自己配置過XML的包掃描,沒試過注解的掃描。
解決方法
1.在啟動類**@SpringBootApplication**加參數(shù) ,掃描指定的包
@SpringBootApplication(scanBasePackages = {“com.zhl.dispatcher”,“server.server”})
這里也包括其他模塊的包,掃描到包及子包的類。加載進(jìn)Spring的容器當(dāng)中。
2.新增注解
@ComponentScan(value = {“com.zhl.dispatcher”,“server.server”})
第二種其實(shí)這個注解是有些多余,@SpringBootApplication本身就已經(jīng)包含掃描包路徑的屬性了,不過這兩種方法都可以用哦
多模塊項(xiàng)目中無法注入其他模塊的spring bean
在一個springboot項(xiàng)目中創(chuàng)建了一個common模塊,一個admin模塊,
在admin模塊中引入common模塊依賴,發(fā)現(xiàn)無法注入common模塊中的bean,idea提示無法找到bean。
瞎忙活一晚上,最后發(fā)現(xiàn)是兩個模塊路徑不同意,一個是com.example.common,另一個是com.example.admin。
這是因?yàn)閟pringboot的@SpringBootApplication注解默認(rèn)掃描范圍為自己的啟動類所在的包(com.example.admin)及其子包,所以此時模塊admin并沒有掃描到模塊common的bean,那么自然無法在模塊admin中注入模塊common的Service類。
最后:
方法一:都改成com.example就好了。
方法二:手動修改成導(dǎo)入多個包,@SpringBootApplication(scanBasePackages = {“com.example.admin”, “com.example.common”})
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Hibernate基于ThreadLocal管理Session過程解析
這篇文章主要介紹了Hibernate基于ThreadLocal管理Session過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-10-10Spring數(shù)據(jù)庫連接池url參數(shù)踩坑及解決
這篇文章主要介紹了Spring數(shù)據(jù)庫連接池url參數(shù)踩坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09JavaFX Application應(yīng)用實(shí)例
下面小編就為大家?guī)硪黄狫avaFX Application應(yīng)用實(shí)例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-10-10Spring Boot集成MyBatis訪問數(shù)據(jù)庫的方法
這篇文章主要介紹了Spring Boot集成MyBatis訪問數(shù)據(jù)庫的方法,需要的朋友可以參考下2017-04-04SpringBoot發(fā)送短信驗(yàn)證碼的實(shí)例
第三方短信發(fā)送平臺有很多種,各個平臺有各自的優(yōu)缺點(diǎn),在選擇的時候可以根據(jù)自己的具體實(shí)際情況定奪,本文主要介紹了SpringBoot發(fā)送短信驗(yàn)證碼的實(shí)例,感興趣的可以了解一下2022-02-02