欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

  @Autowired
  UserDao userDao;

警告內(nèi)容是

Field injection is not recommended

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

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

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

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

依賴(lài)注入有三種方式:

  • 變量(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è)依賴(lài)一樣能解決掉這個(gè)問(wèn)題。

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

另一個(gè)方面:

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

總結(jié)下:

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

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

相關(guān)文章

  • 關(guān)于feign調(diào)用的參數(shù)傳遞問(wèn)題(@RequestBody和@RequestParam)

    關(guān)于feign調(diào)用的參數(shù)傳遞問(wèn)題(@RequestBody和@RequestParam)

    這篇文章主要介紹了關(guān)于feign調(diào)用的參數(shù)傳遞問(wèn)題(@RequestBody和@RequestParam),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Spring?Boot項(xiàng)目獲取resources目錄下文件并返回給前端的方案

    Spring?Boot項(xiàng)目獲取resources目錄下文件并返回給前端的方案

    我們?cè)陧?xiàng)目中經(jīng)常碰到需要讀取固定文件的場(chǎng)景,如模板文件,一般做法是將文件放在resources目錄下,程序通過(guò)多種方式可以順利讀取文件,這篇文章主要給大家介紹了關(guān)于Spring?Boot項(xiàng)目獲取resources目錄下文件并返回給前端的相關(guān)資料,需要的朋友可以參考下
    2024-07-07
  • 使用springboot訪問(wèn)圖片本地路徑并映射成url

    使用springboot訪問(wèn)圖片本地路徑并映射成url

    這篇文章主要介紹了使用springboot訪問(wèn)圖片本地路徑并映射成url的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java CyclicBarrier源碼層分析與應(yīng)用

    Java CyclicBarrier源碼層分析與應(yīng)用

    這篇文章主要介紹了Java CyclicBarrier的源碼層分析與應(yīng)用,CyclicBarrier也叫同步屏障,可以讓一組線程達(dá)到一個(gè)屏障時(shí)被阻塞,直到最后一個(gè)線程達(dá)到屏障,感興趣的的朋友可以參考下
    2023-12-12
  • Spingboot?JPA?CriteriaBuilder?如何獲取指定字段

    Spingboot?JPA?CriteriaBuilder?如何獲取指定字段

    這篇文章?主要介紹了Spingboot?JPA?CriteriaBuilder?如何獲取指定字段,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Spring Boot 添加MySQL數(shù)據(jù)庫(kù)及JPA實(shí)例

    Spring Boot 添加MySQL數(shù)據(jù)庫(kù)及JPA實(shí)例

    本篇文章主要介紹了Spring Boot 添加MySQL數(shù)據(jù)庫(kù)及JPA,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • 自定義spring mvc的json視圖實(shí)現(xiàn)思路解析

    自定義spring mvc的json視圖實(shí)現(xiàn)思路解析

    這篇文章主要介紹了自定義spring mvc的json視圖的實(shí)現(xiàn)思路解析,本文給大家介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-12-12
  • Java多線程編程綜合案例詳解

    Java多線程編程綜合案例詳解

    這篇文章將通過(guò)三個(gè)案例帶大家了解一下Java中的多線程編程,文中的示例代碼介紹詳細(xì),對(duì)我們的學(xué)習(xí)或工作有一定的價(jià)值,感興趣的小伙伴可以了解一下
    2022-07-07
  • Java多線程之Future設(shè)計(jì)模式

    Java多線程之Future設(shè)計(jì)模式

    這篇文章主要介紹了Java多線程之Future設(shè)計(jì)模式,F(xiàn)uture 代表的是未來(lái)的一個(gè)憑據(jù),文章主要附上Future具體實(shí)現(xiàn)類(lèi)、橋接Future和FutureTask的代碼,需要的朋友可以參考一下
    2021-10-10
  • SpringBoot實(shí)現(xiàn)簡(jiǎn)單的登錄注冊(cè)的項(xiàng)目實(shí)戰(zhàn)

    SpringBoot實(shí)現(xiàn)簡(jiǎn)單的登錄注冊(cè)的項(xiàng)目實(shí)戰(zhàn)

    本文主要介紹了SpringBoot實(shí)現(xiàn)簡(jiǎn)單的登錄注冊(cè)的項(xiàng)目實(shí)戰(zhàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03

最新評(píng)論