springboot 無法自動裝配的問題
springboot 無法自動裝配
@Autowired 報錯:無法自動裝配
基本上是因為
1、項目裡有類似mybatis @Mapper這種第三方映射類,需要用到springboot autoconfigration掃描解析。
2、@SpringBootApplication類,沒有放到java根目錄下
放到org.example下,問題解決
原因
因為springboot隻掃描@SpringBootApplication類目錄及子目錄下的自動配置:
For example, it will be used when scanning for @Entity classes. It is generally recommended that you place @EnableAutoConfiguration (if you're not using @SpringBootApplication) in a root package so that all sub-packages and classes can be searched.
真想罵他一句,約定就約定吧,能聰明點嗎
無法自動裝配。未找到“xxxMapper”類型的bean
Could not autowire. No beans of ‘xxxMapper’ type found.
說明Spring框架沒有識別到你的xxxMapper中的類
也就是說,xxxMapper的類沒有被Spring框架給管理,如果你所需要的類需要給Spring給管理,那麼你得在他上面加上@Repository註解,這樣你在service層自動註入時他才不會報錯。
如果你得類不需要管理或者繼承或實現一些規則
並且程序沒有產生一些錯誤,那麼這些都是可以被允許的。
@Repository public interface AdminMapper { public void xxx(){} }
public class AdminServiceImpl { @Autowired private AdminMapper adminMapper; }
這樣他就不會報錯瞭。
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- SpringBoot對不同Bean註解的區別和使用場景說明
- SpringBoot @Autowired註入為空的情況解讀
- SpringBoot中@Transiactional註解沒有效果的解決
- SpringBoot自動配置特點與原理詳細分析
- Spring的@Autowired加到接口上但獲取的是實現類的問題