SpringBoot項目的Bean裝配默認規則是根據Application類所在的包位置從上往下掃描!
「Application類」是指SpringBoot項目入口類。
這個類的位置很關鍵:
若是Application類所在的包爲:com.boot.app,則只會掃描com.boot.app包及其全部子包,若是service或dao所在包不在com.boot.app及其子包下,則不會被掃描!
即, 把Application類放到dao、service所在包的上級,com.boot.Application
知道這一點很是關鍵,大多數狀況下bean沒法注入進來都是這個緣由引發的。
java
本人的錯誤緣由是:entity,service,serviceImpl,controller等這些包和Application.java SpringBoot程序的入口不在同一個包且不在Application.java的子包中。app
緣由是:SpringBoot運行時所加載的包是Application.java本包及其子包的代碼。因此根本掃描不到其餘包,你怎麼改註解都是錯誤的。it
緣由之二:就是bean加載順序不對,比方說你的攔截器是在service加載以前就生成了,application在生成攔截器bean的時候怎麼能找到service這個bean呢.
io