近來在自己學習SpringBoot的時候遇到的一個坑,在建立Junit測試的過程中發現JavaBean居然無法注入
我本人在建立測試的時候注解是這樣的
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwczLcVmds92czlGZvwVP9EUTDZ0aRJkSwk0LcxGbpZ2LcBDM08CXlpXazRnbvZ2LcRlMMVDT2EWNvwFdu9mZvwVP9E0Y0Y1Mi9GczMWM5clYoplMMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TN4ETNwkDN4ETNxcDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
檢視其它小夥伴的解決方案是這樣的,當然這種情況呢主要适用于在Springboot版本不一樣的情況下可以一試:
springboot在新版中用SpringBootTest代替了SpringApplicationConfiguration,是以如果是因為版本不同而導緻的注入不成功則在此處将注解改為以下形式就可以正常注入Bean了!
然而對我建立的項目來說,依然注入失敗,内心不免有點兒小崩潰,于是多方查找相關資料
發現了問題所在,這個不知道的話需要留意下了:
SpringBoot項目的Bean裝配預設規則是根據Application類所在的包位置從上往下掃描!“Application”是指SpringBoot項目入口。這個類的位置很關鍵:如果Application類所在的包為:com.boot.sell,則隻會掃描com.boot.sell包及其所有子包,如果service層或着是dao層,以及Javabean所在包不在com.boot.sell及其子包下,則不會被掃描!即, 把Application類放到dao、service、Javabean所在包的上級,com.boot.Application問題即可解決知道這一點非常關鍵,如果不知道還真是無從解決!
最後再記錄下另一個小情況就是在高一點兒的springboot版本中沒有findOne方法,已經被getOne方法所替代!