最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java?@Autowired報(bào)錯原因分析和4種解決方案

 更新時間:2022年05月10日 14:29:19   作者:??Java中文社群????  
這篇文章主要介紹了Java?@Autowired報(bào)錯原因分析和4種解決方案,文章圍繞主題展開詳細(xì)內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考以一下

前言:

 上圖的報(bào)錯信息相信大部分程序員都遇到過,奇怪的是雖然代碼報(bào)錯,但絲毫不影響程序的正常執(zhí)行,也就是雖然編譯器 IDEA 報(bào)錯,但程序卻能正常的執(zhí)行,那這其中的原因又是為何?

報(bào)錯原因分析

報(bào)錯的原因首先是因?yàn)?IDEA 強(qiáng)大的報(bào)警機(jī)制,@Autowired 為 Spring 的注解,含義是將某類動態(tài)的注入到當(dāng)前類中,

如下圖所示: 

 @Autowired 默認(rèn)是根據(jù) type 進(jìn)行注入,并且注入時要求(注入)對象不能為 NULL,默認(rèn)值如下圖所示: 

 而 IDEA 報(bào)錯的原因是:@Autowired 為 Spring 的注解,而注入的 Mapper 對象使用的又是 @Mapper 的注解,然而 @Mapper 又為 MyBaits 的注解,IDEA 能很好的兼容并識別 Spring 的注解,但不能很好的識別 MyBatis 的注解,因此在使用 @Autowired 注解時,IDEA 并不能檢測到 @Mapper 注解的對象不為 NULL,因此就會報(bào)錯。 

這就是為什么使用 Spring 的注解 @Repository/@Component... 不報(bào)錯,而使用 @Mapper 注解卻會報(bào)錯的根本原因,

如下圖所示: 

解決方案1:關(guān)閉報(bào)警機(jī)制

關(guān)閉 IDEA 注入報(bào)警機(jī)制,可以避免報(bào)錯,實(shí)現(xiàn)步驟如下。

1.打開 IDEA,找到參數(shù)設(shè)置選項(xiàng) “Preferences...” ,如下圖所示: 

 2.依次選擇

“Editor” -> “Inspections” -> “Spring” -> “Spring Core” -> “Code” -> “Autowiring for bean class” 將 “Error” 級別修改成 “Waring” 級別,

如下圖所示: 

 設(shè)置完成之后點(diǎn)擊確認(rèn),查看之前報(bào)錯的 Mapper 類,此時展示效果如下:

 報(bào)錯信息消失了。?

解決方案2:添加Spring注解

在 Mapper 的類上添加 Spring 的注解,也可以解決 IDEA 報(bào)錯的問題,如 @Repository 或 @Component 這類注解,

如下圖所示: 

或使用 @Repository 注解,如下圖所示: 

 查看之前的報(bào)錯信息: 

 報(bào)錯消失了。

解決方案3:允許注入對象為NULL

設(shè)置允許注入的 Mapper 對象為 NULL,也可以避免 IDEA 報(bào)錯,只需要設(shè)置 @Autowired(required=false) 即可,

如下圖所示: 

 (其中 userMapper2 對象就不報(bào)錯了)

  • @Autowired(required=true):表示當(dāng)使用 @Autowired 注解的時候,該 bean 必須存在,否則注入失敗,默認(rèn)值。
  • @Autowired(required=false):表示忽略當(dāng)前要注入的 bean,如果有直接注入,沒有則跳過,不會報(bào)錯。

@Autowired 默認(rèn)值的實(shí)現(xiàn)源碼: 

解決方案4:使用@Resource注解

使用 @Resource 注解替換 @Autowired 注解也可以避免報(bào)錯,它們的對比效果如下: 

 @Resource 注解和 @Autowired 注解以當(dāng)前的場景來說,它們的主要區(qū)別是 @Resource 是 Java 自身提供的注解,而 @Autowired 是 Spring 提供的注解,@Autowired 默認(rèn)值為 required=true,所以必須要一個非 NULL 的對象,當(dāng) IDEA 檢測不到對象為 NULL 時就會報(bào)錯,而 @Resource 并沒有這項(xiàng)要求。

總結(jié)

使用 @Autowired 注解導(dǎo)入 Mapper 對象報(bào)錯的原因,是因?yàn)?@Autowired 默認(rèn)情況下,需要注入一個非 NULL 的對象,而被 @Mapper 修飾的類為 MyBatis 的注解,IDEA 并不能很好的識別其為非 NULL 對象,因此就會報(bào)錯。當(dāng)然,它的解決方案也有很多,推薦使用 @Resource 替代 @Autowired 注解的方式來解決此問題。?

到此這篇關(guān)于Java @Autowired報(bào)錯原因分析和4種解決方案的文章就介紹到這了,更多相關(guān)Autowired報(bào)錯分析內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java poi導(dǎo)出Excel下載到客戶端

    Java poi導(dǎo)出Excel下載到客戶端

    這篇文章主要為大家詳細(xì)介紹了Java poi導(dǎo)出Excel下載到客戶端的相關(guān)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Spring?Clou整合?Security?+?Oauth2?+?jwt實(shí)現(xiàn)權(quán)限認(rèn)證的詳細(xì)過程

    Spring?Clou整合?Security?+?Oauth2?+?jwt實(shí)現(xiàn)權(quán)限認(rèn)證的詳細(xì)過程

    本文介紹了如何使用Spring?Cloud、Spring?Security、Oauth2和JWT實(shí)現(xiàn)統(tǒng)一認(rèn)證和權(quán)限管理,并分享了項(xiàng)目結(jié)構(gòu)和主要代碼示例,感興趣的朋友跟隨小編一起看看吧
    2025-02-02
  • 圖文示例詳解Lucene數(shù)據(jù)模型查詢原理

    圖文示例詳解Lucene數(shù)據(jù)模型查詢原理

    這篇文章主要為大家通過圖文示例詳解Lucene數(shù)據(jù)模型查詢原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • springboot2.2.2集成dubbo的實(shí)現(xiàn)方法

    springboot2.2.2集成dubbo的實(shí)現(xiàn)方法

    這篇文章主要介紹了springboot2.2.2集成dubbo的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • RabbitMQ中的Connection和Channel信道詳解

    RabbitMQ中的Connection和Channel信道詳解

    這篇文章主要介紹了RabbitMQ中的Connection和Channel信道詳解,信道是建立在 Connection 之上的虛擬連接,RabbitMQ 處理的每條 AMQP 指令都是通過信道完成的,需要的朋友可以參考下
    2023-08-08
  • 淺析java創(chuàng)建文件和目錄

    淺析java創(chuàng)建文件和目錄

    這篇文章主要介紹了淺析java創(chuàng)建文件和目錄的關(guān)鍵技術(shù)點(diǎn)以及演示示例,是篇非常不錯的文章,有需要的朋友可以參考下
    2014-09-09
  • 你的Idea還有BUG嗎不妨試試另一個開發(fā)神器

    你的Idea還有BUG嗎不妨試試另一個開發(fā)神器

    Spring Tool Suite(STS)就是一個基于Eclipse的開發(fā)環(huán)境, 用于開發(fā)Spring應(yīng)用程序。本文給大家給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-12-12
  • Java8 forEach常用場景代碼實(shí)例

    Java8 forEach常用場景代碼實(shí)例

    這篇文章主要介紹了Java8 forEach常用場景代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Java scala模式匹配機(jī)制詳解

    Java scala模式匹配機(jī)制詳解

    模式匹配語法中,采用match關(guān)鍵字聲明,每個分支采用case關(guān)鍵字進(jìn)行聲明,當(dāng)需要匹配時,會從第一個case分支開始,如果匹配成功,那么執(zhí)行對應(yīng)的邏輯代碼,如果匹配不成功,繼續(xù)執(zhí)行下一個分支進(jìn)行判斷
    2023-02-02
  • Java動態(tài)代理機(jī)制的實(shí)例詳解

    Java動態(tài)代理機(jī)制的實(shí)例詳解

    這篇文章主要介紹了 Java動態(tài)代理機(jī)制的實(shí)例詳解的相關(guān)資料,希望通過本文大家能夠掌握動態(tài)代理機(jī)制,需要的朋友可以參考下
    2017-09-09

最新評論

南阳市| 农安县| 芦溪县| 台湾省| 松江区| 正镶白旗| 鹤壁市| 建始县| 什邡市| 靖边县| 银川市| 曲靖市| 潮安县| 三门峡市| 岳阳县| 池州市| 永定县| 诸暨市| 霍林郭勒市| 东乡族自治县| 南丹县| 卢氏县| 延庆县| 威远县| 嘉祥县| 松江区| 潮安县| 耿马| 中牟县| 伊宁县| 宾阳县| 页游| 衡阳县| 玛多县| 辽阳市| 来凤县| 西乡县| 敦化市| 白玉县| 安西县| 利津县|