4 回答

TA貢獻1868條經(jīng)驗 獲得超4個贊
您的服務(wù)在com.homzhub.lms.service包下,因此您也必須將此包添加到其中@ComponentScan,因此 Spring 也會掃描此包并選擇標有構(gòu)造型的類:
@SpringBootApplication
@ComponentScan(basePackages = {"com.homzhub.lms.controller, "com.homzhub.lms.service"})
public class LmsApplication{
public static void main(String[] args){
SpringApplication.run(LmsApplication.class, args);
}
}
但是,我可以看到您的帶有注釋的類已經(jīng)在所有包含您的組件的包之上,因此您可以完全@SpringBootApplication擺脫注釋。@ComponentScan所以它會默認掃描嵌套包。
還要記住使用 Spring 構(gòu)造型注釋來注釋您的服務(wù)類,@Service以便組件掃描能夠拾取它們。

TA貢獻1797條經(jīng)驗 獲得超6個贊
如果還沒有,您需要將其定義UserService
為組件,或更恰當?shù)囟x為服務(wù)。如果它已經(jīng)是你必須映射它,考慮到 Spring 應(yīng)該自己做這件事,這有點奇怪。

TA貢獻1946條經(jīng)驗 獲得超4個贊
取消@Autowired
注釋。將@Service
注釋放在實現(xiàn)類而不是接口上,并確保您的實現(xiàn)類可以通過componentScan
.
此外,作為旁注,Spring 將掃描主類(帶@SpringBootApplication
注釋的類)的所有子包。因此,如果您希望將實現(xiàn)保留在不同的包中,那么擁有com.homzhub.lms
一個像根和服務(wù)com.homzhub.lms.controller
控制器這樣的目錄結(jié)構(gòu)是個好主意。com.homzhub.lms.service
com.homzhub.lms.service.impl
如果您遵循此結(jié)構(gòu),則不需要componentScan
.

TA貢獻1887條經(jīng)驗 獲得超5個贊
您只是在掃描com.homzhub.lms.controller
,UserService
不在 ComponentScan 下。您需要將服務(wù)包添加到 ComponentScan
@ComponentScan(basePackages = {"com.homzhub.lms"})
添加回答
舉報