Spring注入bean報錯 Error creating bean with name的網上找不到的解決方案

亂了我去發表於2018-11-21
                     

今天在研究BaseService,在進行單元測試時,發現tomcat一直報錯,錯誤程式碼如下:

 

org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘這是我的service測試類’: Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [這是我的service類] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.annotation.Resource(shareable=true, lookup=, name=, description=, authenticationType=CONTAINER, type=class java.lang.Object, mappedName=)}

從資訊中,可以看到是找不到需要注入的bean!我的程式是通過註解@Resource注入的。

嘗試了網上的N種方法,無非以下幾種:

  1. 配置檔案沒有開啟註解掃描bean
  2. spring配置檔案裡beans標籤沒配置default-autowire=”byname”
  3. 各種配置問題…
  4. 呼叫死迴圈

但是問題依然存在,我就開始去檢查需要注入的類有沒有問題,結果發現了。

@Transactional@Service("roomTypeService")public abstract class RoomTypeServiceImpl extends BaseServiceImpl<RoomType, Integer> implements RoomTypeService {    // other fileds and methods......}
  • 1
  • 2
  • 3
  • 4
  • 5

不知道小夥伴們看出問題沒有,這裡的Service註解和name都沒有問題,問題出在類寫成了抽象類!!!抽象類啊!!!我把它去掉了就能正常跑起來了!!

雖然我不知道為什麼當時寫成了抽象類,但還是想分享出來讓跟我犯錯誤的同學儘快脫離debug的痛苦。

說回問題的本質,為什麼寫成了抽象類就無法正常注入呢?這也正是java基礎知識:注入相當於例項化一個物件,而在java的語法裡面,抽象類(和介面)是無法例項化(new)的,所以就注入失敗了!

好久沒寫過原創的文章了,這樣不行,說好的堅持呢= =

           

再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!希望你也加入到我們人工智慧的隊伍中來!http://www.captainbed.net

這裡寫圖片描述

相關文章