溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么解決idea中@Autowired注解下變量報紅

發布時間:2021-11-08 10:34:06 來源:億速云 閱讀:287 作者:iii 欄目:開發技術

這篇文章主要介紹“怎么解決idea中@Autowired注解下變量報紅”,在日常操作中,相信很多人在怎么解決idea中@Autowired注解下變量報紅問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么解決idea中@Autowired注解下變量報紅”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

idea中@Autowired注解下變量報紅

問題

idea中@Autowired注解下變量報紅

怎么解決idea中@Autowired注解下變量報紅

這個不是錯誤,只是一個警告而已,其實不解決也是可以啟動項目的

解決方法

1、修改設置

file–>settings–>Inspections–>spring Core–>Code–>Autowiring for Bean Class

怎么解決idea中@Autowired注解下變量報紅

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

怎么解決idea中@Autowired注解下變量報紅

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

怎么解決idea中@Autowired注解下變量報紅

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

怎么解決idea中@Autowired注解下變量報紅

注解@Autowired--警告(親測可用)

@Autowired
UserDao userDao;

警告內容是

Field injection is not recommended

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

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

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

意思就是總是使用構造器的方式強制注入。

依賴注入有三種方式:

  • 變量(filed)注入

  • 構造器注入

  • set方法注入

先各自看一下實現方式

變量(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;
}

(我遇到該錯誤使用了第三種方法)

相比較而言:

優點:變量方式注入非常簡潔,沒有任何多余代碼,非常有效的提高了java的簡潔性。即使再多幾個依賴一樣能解決掉這個問題。

缺點:不能有效的指明依賴。相信很多人都遇見過一個bug,依賴注入的對象為null,在啟動依賴容器時遇到這個問題都是配置的依賴注入少了一個注解什么的,然而這種方式就過于依賴注入容器了,當沒有啟動整個依賴容器時,這個類就不能運轉,在反射時無法提供這個類需要的依賴。

在使用set方式時,這是一種選擇注入,可有可無,即使沒有注入這個依賴,那么也不會影響整個類的運行。

在使用構造器方式時已經顯式注明必須強制注入。通過強制指明依賴注入來保證這個類的運行。

另一個方面:

依賴注入的核心思想之一就是被容器管理的類不應該依賴被容器管理的依賴,換成白話來說就是如果這個類使用了依賴注入的類,那么這個類擺脫了這幾個依賴必須也能正常運行。然而使用變量注入的方式是不能保證這點的。

既然使用了依賴注入方式,那么就表明這個類不再對這些依賴負責,這些都由容器管理,那么如何清楚的知道這個類需要哪些依賴呢?它就要使用set方法方式注入或者構造器注入。

到此,關于“怎么解決idea中@Autowired注解下變量報紅”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女