idea中@Autowired注解下變量報紅的解決
idea中@Autowired注解下變量報紅
問題
idea中@Autowired注解下變量報紅

這個不是錯誤,只是一個警告而已,其實不解決也是可以啟動項目的
解決方法
1、修改設置
file–>settings–>Inspections–>spring Core–>Code–>Autowiring for Bean Class

2、修改注解@Autowired為注解@Resource

3、注解@Autowired的屬性required = false

4、對應的dao層代碼添加注解@Repository(“UserDao”)

注解@Autowired--警告(親測可用)
@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
意思就是總是使用構造器的方式強制注入。
依賴注入有三種方式:
- 變量(filed)注入
- 構造器注入
- set方法注入
先各自看一下實現(xiàn)方式
變量(filed)注入
@Autowired UserDao userDao;
構造器注入
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)點:變量方式注入非常簡潔,沒有任何多余代碼,非常有效的提高了java的簡潔性。即使再多幾個依賴一樣能解決掉這個問題。
缺點:不能有效的指明依賴。相信很多人都遇見過一個bug,依賴注入的對象為null,在啟動依賴容器時遇到這個問題都是配置的依賴注入少了一個注解什么的,然而這種方式就過于依賴注入容器了,當沒有啟動整個依賴容器時,這個類就不能運轉(zhuǎn),在反射時無法提供這個類需要的依賴。
在使用set方式時,這是一種選擇注入,可有可無,即使沒有注入這個依賴,那么也不會影響整個類的運行。
在使用構造器方式時已經(jīng)顯式注明必須強制注入。通過強制指明依賴注入來保證這個類的運行。
另一個方面:
依賴注入的核心思想之一就是被容器管理的類不應該依賴被容器管理的依賴,換成白話來說就是如果這個類使用了依賴注入的類,那么這個類擺脫了這幾個依賴必須也能正常運行。然而使用變量注入的方式是不能保證這點的。
既然使用了依賴注入方式,那么就表明這個類不再對這些依賴負責,這些都由容器管理,那么如何清楚的知道這個類需要哪些依賴呢?它就要使用set方法方式注入或者構造器注入。
小結下
變量方式注入應該盡量避免,使用set方式注入或者構造器注入,這兩種方式的選擇就要看這個類是強制依賴的話就用構造器方式,選擇依賴的話就用set方法注入。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家.
相關文章
Spring實戰(zhàn)之使用@Resource配置依賴操作示例
這篇文章主要介紹了Spring實戰(zhàn)之使用@Resource配置依賴操作,結合實例形式分析了Spring使用@Resource配置依賴具體步驟、實現(xiàn)及測試案例,需要的朋友可以參考下2019-12-12
java中將漢字轉(zhuǎn)換成拼音的實現(xiàn)代碼
java中將漢字轉(zhuǎn)換成拼音的實現(xiàn)代碼。需要的朋友可以過來參考下,希望對大家有所幫助2013-10-10
Java8中forEach語句循環(huán)一個List和Map
這篇文章主要給大家介紹了關于Java8中forEach語句循環(huán)一個List和Map的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-02-02
Java漢字轉(zhuǎn)拼音類庫Pinyin4j詳細使用方法與實例
這篇文章主要介紹了Java漢字轉(zhuǎn)拼音類庫Pinyin4j詳細使用方法與實例,需要的朋友可以參考下2020-02-02
Java代理模式之靜態(tài)代理與動態(tài)代理的區(qū)別及優(yōu)缺點
代理模式是一種常用的設計模式,它允許通過引入一個代理對象來控制對目標對象的訪問,在Java中,代理模式被廣泛應用,它可以提供額外的功能,如權限檢查、緩存、日志記錄等,本文將介紹靜態(tài)代理與動態(tài)代理的區(qū)別及優(yōu)缺點,需要的朋友可以參考下2023-06-06
Jenkins Pipeline 部署 SpringBoot 應用的教程詳解
這篇文章主要介紹了Jenkins Pipeline 部署 SpringBoot 應用的詳細教程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07
solr 配置中文分析器/定義業(yè)務域/配置DataImport功能方法(測試用)
下面小編就為大家?guī)硪黄猻olr 配置中文分析器/定義業(yè)務域/配置DataImport功能方法(測試用)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-09-09
java 在Jetty9中使用HttpSessionListener和Filter
這篇文章主要介紹了java 在Jetty9中使用HttpSessionListener和Filter的相關資料,需要的朋友可以參考下2017-06-06

