SpringBoot(cloud)自動(dòng)裝配bean找不到類型的問(wèn)題
SpringBoot自動(dòng)裝配bean找不到類型
Spring基于注解的@Autowired是比較常用的自動(dòng)裝配注解,但是會(huì)因?yàn)閭€(gè)人的疏忽,SSM進(jìn)行配置的時(shí)候沒(méi)有將對(duì)應(yīng)bean所在包給掃描進(jìn)去;或者使用Boot的時(shí)候,沒(méi)有放在啟動(dòng)類所在包及其子包下導(dǎo)致報(bào)錯(cuò)。
今天我就犯了因?yàn)閎oot掃不到包的問(wèn)題
Description:
Field empApi in feign_consumer.demo.controller.testController required a bean of type 'api.eApi' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:Consider defining a bean of type 'api.eApi' in your configuration.
Process finished with exit code 1
看報(bào)錯(cuò),很明顯就是找不到Bean;換而言之就是bean對(duì)象沒(méi)有裝配到Spring容器中,導(dǎo)致啟動(dòng)的時(shí)候要裝配缺找到。
看項(xiàng)目結(jié)構(gòu)
很明顯
在boot啟動(dòng)的時(shí)候掃描的是feign_consumer.demo這個(gè)包及其子包,而需要裝配的bean就只在api這包下,Spring在啟動(dòng)的時(shí)候根本不會(huì)掃到api這個(gè)包(除非使用了@ComponentScan修改了約定)。所以就會(huì)導(dǎo)致項(xiàng)目啟動(dòng)報(bào)錯(cuò)。
這也提醒了我們,使用模塊化開(kāi)發(fā)要注意項(xiàng)目的完整性以及其工程結(jié)構(gòu);另外,代碼規(guī)范也很重要。
無(wú)法自動(dòng)裝配。未找到“xxxMapper”類型的bean
Could not autowire. No beans of ‘xxxMapper’ type found.
說(shuō)明Spring框架沒(méi)有識(shí)別到你的xxxMapper中的類,也及是說(shuō),xxxMapper的類沒(méi)有被Spring框架給管理,如果你所需要的類需要給Spring給管理,那么你得在他上面加上@Repository注解,這樣你在service層自動(dòng)注入時(shí)他才不會(huì)報(bào)錯(cuò)。
如果的你得類不需要管理或者繼承或?qū)崿F(xiàn)一些規(guī)則,并且程序沒(méi)有產(chǎn)生一些錯(cuò)誤,那么這些都是可以被允許的。
@Repository public interface AdminMapper ?{ ?? ?public void xxx(){} }
public class AdminServiceImpl ?{ ? ? @Autowired ? ? private AdminMapper adminMapper; ? ? }
這樣他就不會(huì)報(bào)錯(cuò)了。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Spring Cloud 配置中心多環(huán)境配置bootstrap.yml的實(shí)現(xiàn)方法
- 解決springboot與springcloud版本兼容問(wèn)題(附版本兼容表)
- 將Springboot項(xiàng)目升級(jí)成Springcloud項(xiàng)目的圖文教程
- SpringCloud解決Feign異步回調(diào)問(wèn)題(SpringBoot+Async+Future實(shí)現(xiàn))
- SpringBoot項(xiàng)目改為SpringCloud項(xiàng)目使用nacos作為注冊(cè)中心的方法
- springboot集成springCloud中g(shù)ateway時(shí)啟動(dòng)報(bào)錯(cuò)的解決
- 解決nacos升級(jí)spring cloud 2020.0無(wú)法使用bootstrap.yml的問(wèn)題
- 從零開(kāi)始搭建springboot+springcloud+mybatis本地項(xiàng)目全過(guò)程(圖解)
- 詳解SpringBoot與SpringCloud的版本對(duì)應(yīng)詳細(xì)版
- Spring、Spring?Boot、Spring?Cloud?的區(qū)別與聯(lián)系分析
相關(guān)文章
為IntelliJ IDEA配置JVM參數(shù)的兩種方法
在使用IntelliJ IDEA進(jìn)行Java開(kāi)發(fā)時(shí),合理配置JVM參數(shù)對(duì)于優(yōu)化項(xiàng)目性能和資源管理至關(guān)重要,IntelliJ IDEA提供了兩種方便的方式來(lái)設(shè)置JVM參數(shù),本文將詳細(xì)介紹這兩種方法:通過(guò)工具欄編輯配置和通過(guò)服務(wù)編輯配置,需要的朋友可以參考下2024-12-12SpringBoot實(shí)現(xiàn)多租戶架構(gòu)
在SpringBoot中可以通過(guò)多數(shù)據(jù)源和動(dòng)態(tài)路由來(lái)實(shí)現(xiàn)多租戶機(jī)制,本文主要介紹了SpringBoot實(shí)現(xiàn)多租戶架構(gòu),具有一定的參考價(jià)值,感興趣的可以里哦啊接一下2024-03-03Java中Lombok @Value注解導(dǎo)致的variable not been initialized問(wèn)題
本文主要介紹了Java中Lombok @Value注解導(dǎo)致的variable not been initialized問(wèn)題,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07scala中的隱式類型轉(zhuǎn)換的實(shí)現(xiàn)
這篇文章主要介紹了scala中的隱式類型轉(zhuǎn)換的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06SpringBoot整合log4j2日志的實(shí)現(xiàn)
在項(xiàng)目推進(jìn)中,如果說(shuō)第一件事是搭Spring框架的話,那么第二件事情就是在Sring基礎(chǔ)上搭建日志框架,大家都知道日志對(duì)于一個(gè)項(xiàng)目的重要性,尤其是線上Web項(xiàng)目,因?yàn)槿罩究赡苁俏覀兞私鈶?yīng)用如何執(zhí)行的唯一方式。此篇文章是博主在實(shí)踐中用Springboot整合log4j2日志的總結(jié)2021-06-06SpringSecurity HttpSecurity 類處理流程分析
SpringSecurity在SSM項(xiàng)目中使用基于配置文件,通過(guò)XML標(biāo)簽定義認(rèn)證信息,HttpSecurity在SpringBoot中通過(guò)代碼配置實(shí)現(xiàn)與XML相同功能,詳細(xì)介紹了HttpSecurity的類結(jié)構(gòu)、處理過(guò)程及其與SecurityBuilder的關(guān)系,感興趣的朋友一起看看吧2024-09-09Java中ScheduledExecutorService介紹和使用案例(推薦)
ScheduledExecutorService是Java并發(fā)包中的接口,用于安排任務(wù)在給定延遲后運(yùn)行或定期執(zhí)行,它繼承自ExecutorService,具有線程池特性,可復(fù)用線程,提高效率,本文主要介紹java中的ScheduledExecutorService介紹和使用案例,感興趣的朋友一起看看吧2024-10-10