idea注入mapper報(bào)錯(cuò)報(bào)紅的幾種解決方案
前言
相信大家在使用idea的時(shí)候一定會遇到這樣的問題,就是在service里注入mapper的時(shí)候,明明代碼沒有問題,也可以運(yùn)行,但是idea它就是給你報(bào)個(gè)錯(cuò),有個(gè)紅色的波浪線在下面,這讓人感覺很不舒服。怎么辦呢?

先來大概說一下,產(chǎn)生這種現(xiàn)象的原因。idea其實(shí)是非常智能的,它可以理解Spring的上下文,然而 XxxxMapper 這種接口是Mybatis的,IDEA它理解不了。再加上 @Autowired 這個(gè)注解呢,它默認(rèn)情況下要求依賴對象(也就是 XxxxMapper )必須存在,而IDEA認(rèn)為這個(gè)對象的實(shí)例/代理是個(gè)null,所以就友好地給個(gè)提示,給你報(bào)個(gè)紅~
今天就說一下以下幾種解決方案
方法1:為 @Autowired 注解設(shè)置required = false
使用 @Autowired 注解時(shí),若希望允許null值,可設(shè)置required = false
像這樣:

這樣就不會有警告了。原因很好理解:IDEA認(rèn)為cashTicketMapper是個(gè)null,給了警告;加上required = false后,使用 @Autowired 注解不再去校驗(yàn)userMapper是否存在了,也就不會有警告了。
但是,這種方式有點(diǎn)蛋疼!一個(gè)龐大的既有項(xiàng)目,可能到處都在引用Mapper,總不能到處都補(bǔ)上 required = false 吧。而且對于新手/新員工,很難一眼看懂加required = false屬性只是為了解決IDEA的警告。
方法2:用 @Resource 替換 @Autowired
像這樣:

這樣也不會再有討厭的警告。如果你對原因感興趣,不妨去了解一下@Autowired 與@Resource的區(qū)別
這種方式挺贊,但如果一個(gè)項(xiàng)目已經(jīng)大量使用@Autowired,然后為了個(gè)警告到處改成@Resource,也有點(diǎn)蛋疼。
方法3:在Mapper接口上加上@Repository注解
像這樣:

這樣也能讓你的
@Autowired private StdNmRecordMapper stdNmRecordMapper;
不再報(bào)錯(cuò)。
當(dāng)然,如果你用@Component替換@Repository也是可以的。原理大致:IDEA不是認(rèn)為 userMapper 是個(gè)null…
加個(gè)@Repository注解或者@Component騙一下IDEA就OK了……
這種方式也比較贊,改動小,也簡單,我比較喜歡。
方法4:用Lombok
像這樣:

Lombok生成的代碼是這樣的:
@Service
public class TestService {
private CashTicketMapper cashTicketMapper;
@Autowired
public TestService(CashTicketMapper cashTicketMapper;) {
this.cashTicketMapper= cashTicketMapper;
}
}
但如果自己手寫成Lombok生成的代碼,IDEA依然會給你報(bào)警告 。我猜,應(yīng)該是IDEA的Lombok插件把IDEA搞懵逼了…所以不提示了…
方法5:把IDEA的警告關(guān)閉掉
這個(gè)方法比較不推薦,感覺沒有提示的IDEA是沒有靈魂的,所以不推薦。我也從來不去修改IDEA的任何警告設(shè)置。
但是大家可以按照下圖去試試

好了,以上就是 idea 注入mapper報(bào)錯(cuò)報(bào)紅的幾種解決方案,希望對你有所幫助~
方法6:不用管他
這只是一個(gè)提示,并不影響程序運(yùn)行,如果沒有強(qiáng)迫癥的話,可以不用管他。
到此這篇關(guān)于idea注入mapper報(bào)錯(cuò)報(bào)紅的幾種解決方案的文章就介紹到這了,更多相關(guān)idea注入mapper報(bào)錯(cuò)報(bào)紅內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring Boot 與 Kotlin 使用JdbcTemplate連接MySQL數(shù)據(jù)庫的方法
本文介紹在Spring Boot基礎(chǔ)下配置數(shù)據(jù)源和通過 JdbcTemplate 編寫數(shù)據(jù)訪問的示例。感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧2018-01-01
java根據(jù)網(wǎng)絡(luò)地址保存圖片的方法
這篇文章主要為大家詳細(xì)介紹了java根據(jù)網(wǎng)絡(luò)地址保存圖片的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07
SpringBoot后端數(shù)據(jù)校驗(yàn)實(shí)戰(zhàn)操作指南
在項(xiàng)?開發(fā)中,對于前端提交的表單,后臺接?接收到表單數(shù)據(jù)后,為了保證程序的嚴(yán)謹(jǐn)性,通常后端會加?業(yè)務(wù)參數(shù)的合法校驗(yàn)操作來避免程序的?技術(shù)性?bug,這篇文章主要給大家介紹了關(guān)于SpringBoot后端數(shù)據(jù)校驗(yàn)的相關(guān)資料,需要的朋友可以參考下2022-07-07
SpringBoot利用Validation包實(shí)現(xiàn)高效參數(shù)校驗(yàn)
如果不進(jìn)行校驗(yàn)就直接使用這些數(shù)據(jù),可能會導(dǎo)致各種問題,那么SpringBoot如何利用Validation包實(shí)現(xiàn)高效參數(shù)校驗(yàn)?zāi)?下面讓我們一起來探討這個(gè)重要的話題吧2025-04-04
Spring Boot場景啟動器(Starters)從入門到精通
本文給大家介紹Spring Boot場景啟動器(Starters)完全指南:從入門到精通,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2025-10-10
分享關(guān)于JAVA 中使用Preferences讀寫注冊表時(shí)要注意的地方
這篇文章介紹了關(guān)于JAVA 中使用Preferences讀寫注冊表時(shí)要注意的地方,有需要的朋友可以參考一下2013-08-08
java synchronized加載加鎖-線程可重入詳解及實(shí)例代碼
這篇文章主要介紹了java synchronized加載加鎖-線程可重入詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-02-02

