關於SpringBoot bean無法注入的問題(與檔案包位置有關)
問題場景描述
整個專案通過Maven構建,大致結構如下:
- 核心Spring框架一個module
spring-boot-base
- service和dao一個module
server-core
- 提供系統後臺資料管理一個module
server-platform-app
- 給移動端提供rest資料介面一個module
server-mobile-api
其中server-platform-app
與server-mobile-api
分別是兩個springboot搭建的獨立服務端。server-platform-app
大致業務開發接近尾聲,然後獨立出另一個web端server-mobile-api
用於給mobile端提供資料。可就在搭建完成之後遇到了奇葩問題!
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [io.github.gefangshuai.rtat.service.RestaurantService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1301)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1047)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:942)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:533)
... 24 more
總是提示無法注入Service或者Dao中的Bean!
解決分析
後來經研究發現,SpringBoot專案的Bean裝配預設規則是根據Application類所在的包位置從上往下掃描!
“Application類”是指SpringBoot專案入口類。這個類的位置很關鍵:
如果Application類所在的包為:
io.github.gefangshuai.app
,則只會掃描io.github.gefangshuai.app
包及其所有子包,如果service或dao所在包不在io.github.gefangshuai.app
及其子包下,則不會被掃描!
知道這一點非常關鍵,不知道Spring文件裡有沒有給出說明,如果不知道還真是無從解決。
相關文章
- 關於Spring的bean注入SpringBean
- @FeignClient @Resource 無法注入Bean Springboot無法啟動clientBeanSpring Boot
- SpringBoot多模組專案中無法注入其他模組中的spring beanSpring BootBean
- 關於Android檔案數過大,分包問題的解決辦法Android
- 關於docker無法訪問倉庫的映象代理問題Docker
- 有關swoole+laravel 上傳檔案的問題Laravel
- 關於FileDownloader檔案長度校驗的問題
- 關於QT的標頭檔案相互包含的問題QT
- 關於各種揹包問題
- 關於Oath2.0Startup類無法啟動的問題
- 關於Linux下Texlive無法找到已安裝字型的問題與解決Linux
- 關於檔案上傳下載的編碼問題
- [Python3] 關於Bytes與String 寫檔案遇到的編碼問題Python
- SpringBoot中關於Mybatis使用的三個問題Spring BootMyBatis
- 與控制檔案有關的恢復
- 有關於css中行高的問題CSS
- 關於一個歸檔問題?
- 關於dataWithContentsOfFile 讀取大檔案的記憶體問題記憶體
- 關於SQLServer的tempdb的資料檔案暴增問題(1)SQLServer
- 關於網路硬體配置出現問題,無法上網問題的解決
- 有關模型關聯的問題模型
- 與控制檔案有關的恢復(二)
- [轉]關於Linux安裝mysql預設配置檔案位置LinuxMySql
- Spring中與bean有關的生命週期SpringBean
- SpringBoot-相關問題Spring Boot
- 4.3.2.2 關於CDB Root和PDB$SEED檔案的名稱和位置
- 關於idea部署本地專案的問題Idea
- 關於lnmp配置laravel專案的問題?LNMPLaravel
- 關於 Go Modules 巢狀引入本地包的問題Go巢狀
- python關於多級包之間的引用問題Python
- 關於Quartus的start按鈕灰色無法下載的問題的解決
- 關於XAMPP中Apache和Mysql因埠占用無法啟動的問題ApacheMySql
- 關於盒模型相關的問題模型
- 關於this指向的問題
- 這幾個關於Spring 依賴注入的問題你清楚嗎?Spring依賴注入
- 關於IE下驗證碼圖片無法正常顯示問題
- 關於canonmx538無線連線的問題
- 關於檔案的open方法
- 關於CleanMyMac常見問題與解答Mac