天天看點

IDEA解決Could not auto wire. No beans of 'AdminService' type found.問題方法一:移動包的位置方法二:建立一個配置類方法三:自定義啟動器

今天在寫項目的時候碰到了如下問題,簡單翻譯一下就是因為這個bean在容器裡不存在,是以不能使用

@Autowired

IDEA解決Could not auto wire. No beans of 'AdminService' type found.問題方法一:移動包的位置方法二:建立一個配置類方法三:自定義啟動器

百度了部分網友的答案是要把這個地方的注解降級,在inspections把Severity的Error改為Warning,雖然是不報錯了,但這種名額不治本的方法抱歉,實在接受不了。

找公司的大佬請教了一些相關的方法來徹底解決這個問題,媽媽再也不用擔心容器裡沒有bean了

IDEA解決Could not auto wire. No beans of 'AdminService' type found.問題方法一:移動包的位置方法二:建立一個配置類方法三:自定義啟動器

方法一:移動包的位置

這個方法可能隻适用于我目前的這個項目,因為這個确實是寫項目的時候沒有考慮到的。

IDEA解決Could not auto wire. No beans of 'AdminService' type found.問題方法一:移動包的位置方法二:建立一個配置類方法三:自定義啟動器

如上圖所示,箭頭标注的位置是Springboot項目的啟動類,項目啟動時,Springboot會在這個類所在的目前目錄及其子目錄下搜尋類,而不在相應位置的類是搜尋不到的,是以這個時候如果我們需要自動注入

me

檔案夾中的類的話就隻需要把

me

檔案夾放進application類所在的

action

檔案夾同目錄下,再在Service上加上

@Service

注釋就OK了

IDEA解決Could not auto wire. No beans of 'AdminService' type found.問題方法一:移動包的位置方法二:建立一個配置類方法三:自定義啟動器
IDEA解決Could not auto wire. No beans of 'AdminService' type found.問題方法一:移動包的位置方法二:建立一個配置類方法三:自定義啟動器

方法二:建立一個配置類

這個方法比較原始,效果很好不過如果類比較多的情況下不适用。由于錯誤提示原因是沒有找到相應的Bean,是以隻要在容器裡手動添加就好了,在Spring中我們添加一個類需要用

<bean></bean>

标簽來添加,而在Springboot中通常我們采用注解的方式來進行配置,這也是Springboot的優勢之一,

@Configuration

标簽的作用就是标注該類為一個配置類,

@Bean

标簽的作用就相當于xml檔案中的

<bean></bean>

标簽,這樣就給容器中手動添加了一個該類型的bean,不推薦使用。

IDEA解決Could not auto wire. No beans of 'AdminService' type found.問題方法一:移動包的位置方法二:建立一個配置類方法三:自定義啟動器

方法三:自定義啟動器

利用maven的打包特性,自定義一個相關的類啟動器,然後在springboot的

pom.xml

檔案裡用

dependency

标簽導入自定義啟動器,類似于JDBC啟動器,這樣檔案的複用性較強,這個項目用完了,别的項目還能接着用

以下是自定義啟動器的過程:

1. 建立Springboot 項目

IDEA解決Could not auto wire. No beans of 'AdminService' type found.問題方法一:移動包的位置方法二:建立一個配置類方法三:自定義啟動器

2. 修改pom檔案

IDEA解決Could not auto wire. No beans of 'AdminService' type found.問題方法一:移動包的位置方法二:建立一個配置類方法三:自定義啟動器
IDEA解決Could not auto wire. No beans of 'AdminService' type found.問題方法一:移動包的位置方法二:建立一個配置類方法三:自定義啟動器

3、建立相應的Java檔案(參照方法二)

圖個友善,我這裡就都寫在了一個檔案夾下

IDEA解決Could not auto wire. No beans of 'AdminService' type found.問題方法一:移動包的位置方法二:建立一個配置類方法三:自定義啟動器

4、在resources/META-INF目錄下建立spring.factories檔案

IDEA解決Could not auto wire. No beans of 'AdminService' type found.問題方法一:移動包的位置方法二:建立一個配置類方法三:自定義啟動器

加入以下内容

org.springframework.boot.autoconfigure.EnableAutoConfiguration=demo.ServiceAutoConfiguration
           

5、打包

IDEA解決Could not auto wire. No beans of 'AdminService' type found.問題方法一:移動包的位置方法二:建立一個配置類方法三:自定義啟動器

install

指令會把這個springboot項目預設打包成jar包并放在本地倉庫,之後就隻要引用這個jar包就可以自動把相應的類存放在容器裡了

新人學習中,如果以上内容有什麼不對的地方還請多多指教,如果這個内容對你有所幫助的話,在下深感榮幸

繼續閱讀