中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

javaspring使用構造器注入的原因是什么

發布時間:2021-09-27 15:02:07 來源:億速云 閱讀:112 作者:小新 欄目:編程語言

這篇文章將為大家詳細講解有關javaspring使用構造器注入的原因是什么,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

一、前言

Spring框架對Java開發的重要性不言而喻,其核心特性就是IOC(Inversion of Control, 控制反轉)和AOP,平時使用最多的就是其中的IOC,我們通過將組件交由Spring的IOC容器管理,將對象的依賴關系由Spring控制,避免硬編碼所造成的過度程序耦合。

二、常見的三種注入方式

2.1 field注入

@Controllerpublic class FooController { @Autowired //@Inject private FooService fooService;  //簡單的使用例子,下同 public List<Foo> listFoo() {   return fooService.list(); }}

這種注入方式應該是筆者目前為止開發中見到的最常見的注入方式。原因很簡單:

注入方式非常簡單:加入要注入的字段,附上@Autowired,即可完成。

使得整體代碼簡潔明了,看起來美觀大方。

2.2 構造器注入

@Controllerpublic class FooController {  private final FooService fooService;  @Autowired public FooController(FooService fooService) {   this.fooService = fooService; }  //使用方式上同,略}

在Spring4.x版本中推薦的注入方式就是這種,相較于上面的field注入方式而言,就顯得有點難看,特別是當注入的依賴很多(5個以上)的時候,就會明顯的發現代碼顯得很臃腫

2.3 setter注入

@Controllerpublic class FooController {  private FooService fooService;  //使用方式上同,略 @Autowired public void setFooService(FooService fooService) {   this.fooService = fooService; }}

在Spring3.x剛推出的時候,推薦使用注入的就是這種,但是構造器注入參數太多了,顯得很笨重,另外setter的方式能用讓類在之后重新配置或者重新注入。

三、構造器注入的好處

這個構造器注入的方式,能夠保證注入的組件不可變,并且確保需要的依賴不為空。此外,構造器注入的依賴總是能夠在返回客戶端(組件)代碼的時候保證完全初始化的狀態

依賴不可變:其實說的就是final關鍵字,這里不再多解釋了。不明白的園友可以回去看看Java語法。  依賴不為空(省去了我們對其檢查):當要實例化FooController的時候,由于自己實現了有參數的構造函數,所以不會調用默認構造函數,那么就需要Spring容器傳入所需要的參數,所以就兩種情況:1、有該類型的參數->傳入,OK 。2:無該類型的參數->報錯。所以保證不會為空,Spring總不至于傳一個null進去吧 。  完全初始化的狀態:這個可以跟上面的依賴不為空結合起來,向構造器傳參之前,要確保注入的內容不為空,那么肯定要調用依賴組件的構造方法完成實例化。而在Java類加載實例化的過程中,構造方法是最后一步(之前如果有父類先初始化父類,然后自己的成員變量,最后才是構造方法,這里不詳細展開)。所以返回來的都是初始化之后的狀態。

關于“javaspring使用構造器注入的原因是什么”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

辽宁省| 忻城县| 利津县| 都兰县| 白水县| 简阳市| 旌德县| 合川市| 宁安市| 麟游县| 安丘市| 温州市| 岫岩| 安远县| 金乡县| 兖州市| 渑池县| 峨眉山市| 绥阳县| 邵阳县| 黎城县| 金门县| 丹棱县| 赤峰市| 高安市| 扶余县| 汤阴县| 庆元县| 清苑县| 边坝县| 陆良县| 靖江市| 和硕县| 孝昌县| 山西省| 德阳市| 呼伦贝尔市| 陆丰市| 鸡西市| 北海市| 黎城县|