這篇文章主要解決使用@Autowired注解警告Field injection is not recommended的問題,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。
10年積累的成都網站制作、網站建設、外貿網站建設經驗,可以快速應對客戶對網站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網絡服務。我雖然不認識你,你也不認識我。但先做網站后付款的網站建設流程,更有邵陽免費網站建設讓你可以放心的選擇與我們合作。
在使用spring框架中的依賴注入注解@Autowired時,idea報了一個警告
大部分被警告的代碼都是不嚴謹的地方,所以我深入了解了一下。
被警告的代碼如下:
@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)注入
@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方法方式注入或者構造器注入。
總結下:
變量方式注入應該盡量避免,使用set方式注入或者構造器注入,這兩種方式的選擇就要看這個類是強制依賴的話就用構造器方式,選擇依賴的話就用set方法注入。
看完上述內容,是不是對解決使用@Autowired注解警告Field injection is not recommended的問題有進一步的了解,如果還想學習更多內容,歡迎關注創新互聯行業資訊頻道。
文章題目:解決使用@Autowired注解警告Fieldinjectionisnotrecommended的問題
轉載來源:http://vcdvsql.cn/article40/jhgdho.html
成都網站建設公司_創新互聯,為您提供ChatGPT、域名注冊、動態網站、做網站、網站策劃、網站內鏈
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯