解決SpringBoot掃描不到公共類的實體問題
SpringBoot掃描不到公共類的實體
我的項目結(jié)構(gòu)是
parent
ademobdemo
parent是一個大項目,項目里面有web、service和entity三個子項目 ademo 依賴于bdemo里面的實體。
aProject項目的包結(jié)構(gòu)是com.test.ademo
bProject項目的包結(jié)構(gòu)是com.test.bdemo
以下的問題是我沒有忘記標注@Component、@Service等容器注解
在ademo項目里面使用@Autowired的時候有異常說是可能會Autowired失敗,但是編譯沒有問題,我就直接run項目,執(zhí)行結(jié)果是報空指針異常,說明對象確實自動導入失敗了。經(jīng)過很多查閱后發(fā)現(xiàn)只需要將兩個項目的包名改成一樣的就可以,或者使用@ComponentScan在啟動類上面加入ademo和bdemo的包名即可
1、將ademo和bdemo的包名改成com.test.project
2、在ademo的啟動類上面加上@ComponentScan({“com.example.ademo”,“com.example.bdemo”})
在執(zhí)行第二點的時候注意就是如果在啟動類上面標注了@ComponentScan就會使會使@SpringBootApplication注解中包含的@ComponentScan注解(即默認的掃描包的位置)失效
具體原因:
因為啟動類上面的@SpringBootApplication里面默認包含了一個@ComponentScan注解,這個注解默認情況下是掃描該類所屬包下面的所有類,包含子目錄中的類。
因為所有網(wǎng)上的注解都是上面那樣的所以我就去想著是不是打包的時候?qū)demo的項目跟ademo可結(jié)合在了一起所以拿不到com.test.ademo包下的文件,但是拿mvn打包后發(fā)現(xiàn)并不是。哈哈
下面是將ademo打包了的結(jié)構(gòu)




代碼證明如果加上
@ComponentScan({“com.example.ademo”,“com.example.bdemo”})
是可以掃描到UserService類的,如果不加是獲取不到的,應該跟SpringBoot底層加載類是相關(guān)的,大家有興趣可以去看一下底層,在底層的我就不再這里講了,自己去看吧。
springboot打包,找不到pojo實體類
修改spring-boot-maven-plugin組件

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot整合MyBatis四種常用的分頁方式(詳細總結(jié))
這篇文章詳細給大家總結(jié)了SpringBoot整合MyBatis四種常用的分頁方式,文中通過代碼示例為大家介紹的非常詳細,需要的朋友可以參考下2023-07-07
Java中使用內(nèi)存映射實現(xiàn)大文件上傳實例
這篇文章主要介紹了Java中使用內(nèi)存映射實現(xiàn)大文件上傳實例,本文對比測試了FileInputStream 或者FileOutputStream 抑或RandomAccessFile的頻繁讀寫操作,最后總結(jié)出映射到內(nèi)存后進行讀寫以提高速度,需要的朋友可以參考下2015-01-01
mybatis-config.xml文件中的mappers標簽使用
在MyBatis配置中,<mapper>標簽關(guān)鍵用于指定SQL?Mapper的XML文件路徑,主要有三種指定方式:resource、url和class,Resource方式從類的根路徑開始,適合放在項目內(nèi)部保障移植性,URL方式指定絕對路徑,移植性差,適用于外部路徑2024-10-10
java使用內(nèi)存數(shù)據(jù)庫ssdb的步驟
這篇文章主要介紹了java使用內(nèi)存數(shù)據(jù)庫ssdb的步驟,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2020-12-12

