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

使用@Autowired注解警告Field injection is not recommended的解決

 更新時(shí)間:2020年04月14日 09:24:19   作者:下雨了_簡(jiǎn)  
這篇文章主要介紹了使用@Autowired注解警告Field injection is not recommended的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

在使用spring框架中的依賴注入注解@Autowired時(shí),idea報(bào)了一個(gè)警告
大部分被警告的代碼都是不嚴(yán)謹(jǐn)?shù)牡胤?,所以我深入了解了一下?br /> 被警告的代碼如下:

  @Autowired
  UserDao userDao;

警告內(nèi)容是

Field injection is not recommended

意思就是使用變量依賴注入的方式是不被推薦的。

使用idea解決策略是這樣的:

Always use constructor based dependency injection in your beans. Always use assertions for mandatory dependencies

意思就是總是使用構(gòu)造器的方式強(qiáng)制注入。

依賴注入有三種方式:

  • 變量(filed)注入
  • 構(gòu)造器注入
  • set方法注入

先各自看一下實(shí)現(xiàn)方式
變量(filed)注入

@Autowired
UserDao userDao;

構(gòu)造器注入

  final
  UserDao userDao;

  @Autowired
  public UserServiceImpl(UserDao userDao) {
    this.userDao = userDao;
  }

set方法注入

  private UserDao userDao;

  @Autowired
  public void setUserDao (UserDao userDao) {
    this.userDao = userDao;
  }

相比較而言:

優(yōu)點(diǎn):變量方式注入非常簡(jiǎn)潔,沒(méi)有任何多余代碼,非常有效的提高了java的簡(jiǎn)潔性。即使再多幾個(gè)依賴一樣能解決掉這個(gè)問(wèn)題。

缺點(diǎn):不能有效的指明依賴。相信很多人都遇見(jiàn)過(guò)一個(gè)bug,依賴注入的對(duì)象為null,在啟動(dòng)依賴容器時(shí)遇到這個(gè)問(wèn)題都是配置的依賴注入少了一個(gè)注解什么的,然而這種方式就過(guò)于依賴注入容器了,當(dāng)沒(méi)有啟動(dòng)整個(gè)依賴容器時(shí),這個(gè)類就不能運(yùn)轉(zhuǎn),在反射時(shí)無(wú)法提供這個(gè)類需要的依賴。
在使用set方式時(shí),這是一種選擇注入,可有可無(wú),即使沒(méi)有注入這個(gè)依賴,那么也不會(huì)影響整個(gè)類的運(yùn)行。
在使用構(gòu)造器方式時(shí)已經(jīng)顯式注明必須強(qiáng)制注入。通過(guò)強(qiáng)制指明依賴注入來(lái)保證這個(gè)類的運(yùn)行。

另一個(gè)方面:

依賴注入的核心思想之一就是被容器管理的類不應(yīng)該依賴被容器管理的依賴,換成白話來(lái)說(shuō)就是如果這個(gè)類使用了依賴注入的類,那么這個(gè)類擺脫了這幾個(gè)依賴必須也能正常運(yùn)行。然而使用變量注入的方式是不能保證這點(diǎn)的。
既然使用了依賴注入方式,那么就表明這個(gè)類不再對(duì)這些依賴負(fù)責(zé),這些都由容器管理,那么如何清楚的知道這個(gè)類需要哪些依賴呢?它就要使用set方法方式注入或者構(gòu)造器注入。

總結(jié)下:

變量方式注入應(yīng)該盡量避免,使用set方式注入或者構(gòu)造器注入,這兩種方式的選擇就要看這個(gè)類是強(qiáng)制依賴的話就用構(gòu)造器方式,選擇依賴的話就用set方法注入。

到此這篇關(guān)于使用@Autowired注解警告Field injection is not recommended的解決的文章就介紹到這了,更多相關(guān)@Autowired注解警告內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • dom4j操作xml的demo(分享)

    dom4j操作xml的demo(分享)

    下面小編就為大家?guī)?lái)一篇dom4j操作xml的demo(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • springcloud?整合?openfeign的方法

    springcloud?整合?openfeign的方法

    openFeign 是springcloud對(duì)Feign進(jìn)行了增強(qiáng),使得Feign支持了springmvc的注解,并整合了Ribbon和Eureka,從而讓Feign的使用更加方便,這篇文章主要介紹了springcloud?整合?openfeign,需要的朋友可以參考下
    2022-09-09
  • spring?data?jpa查詢一個(gè)實(shí)體類的部分屬性方式

    spring?data?jpa查詢一個(gè)實(shí)體類的部分屬性方式

    這篇文章主要介紹了spring?data?jpa查詢一個(gè)實(shí)體類的部分屬性方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • IDEA配置使用Maven Helper插件的方法(詳細(xì)配置)

    IDEA配置使用Maven Helper插件的方法(詳細(xì)配置)

    這篇文章主要介紹了Maven Helper插件IDEA配置使用(詳細(xì)配置),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • 深入剖析Java之String字符串

    深入剖析Java之String字符串

    這篇文章主要為大家詳細(xì)介紹了Java之String字符串,重新帶大家認(rèn)識(shí)String字符串,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Spring使用xml方式整合第三方框架流程詳解

    Spring使用xml方式整合第三方框架流程詳解

    這篇文章主要介紹了Spring使用xml方式整合第三方框架流程,Spring會(huì)在應(yīng)用上下文中為某個(gè)bean尋找其依賴的bean,Spring中bean有三種裝配機(jī)制,分別是:在xml中顯式配置、在java中顯式配置、隱式的bean發(fā)現(xiàn)機(jī)制和自動(dòng)裝配
    2023-02-02
  • Java面試題沖刺第七天--Spring框架1

    Java面試題沖刺第七天--Spring框架1

    這篇文章主要為大家分享了最有價(jià)值的三道Spring框架面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下
    2021-07-07
  • java中concat()方法的使用說(shuō)明

    java中concat()方法的使用說(shuō)明

    這篇文章主要介紹了java中concat()方法的使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • 解決springSecurity 使用默認(rèn)登陸界面登錄后無(wú)法跳轉(zhuǎn)問(wèn)題

    解決springSecurity 使用默認(rèn)登陸界面登錄后無(wú)法跳轉(zhuǎn)問(wèn)題

    這篇文章主要介紹了解決springSecurity 使用默認(rèn)登陸界面登錄后無(wú)法跳轉(zhuǎn)問(wèn)題,項(xiàng)目環(huán)境springboot下使用springSecurity 版本2.7.8,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2023-12-12
  • 解決SpringBoot啟動(dòng)報(bào)錯(cuò):Failed?to?load?property?source?from?location?'classpath:/application.yml'問(wèn)題

    解決SpringBoot啟動(dòng)報(bào)錯(cuò):Failed?to?load?property?source?from?l

    這篇文章主要介紹了解決SpringBoot啟動(dòng)報(bào)錯(cuò):Failed?to?load?property?source?from?location?'classpath:/application.yml'問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04

最新評(píng)論

武山县| 浮梁县| 洪江市| 哈尔滨市| 黔江区| 卓尼县| 高台县| 崇州市| 桃江县| 将乐县| 沈阳市| 大埔区| 静安区| 柏乡县| 镇康县| 当雄县| 定西市| 彭山县| 昌乐县| 塘沽区| 河源市| 叙永县| 木兰县| 靖远县| 临沂市| 诏安县| 奎屯市| 平凉市| 金门县| 神木县| 东宁县| 华坪县| 霍州市| 赞皇县| 莱阳市| 金塔县| 丹阳市| 栾川县| 偏关县| 界首市| 澎湖县|