javascript
Spring 依赖注入的实现
依賴注入(Dependency Injection,DI)和控制反轉含義相同,它們是從兩個角度描述的同一個概念。
當某個 Java 實例需要另一個 Java 實例時,傳統的方法是由調用者創建被調用者的實例(例如,使用 new 關鍵字獲得被調用者實例),而使用 Spring 框架后,被調用者的實例不再由調用者創建,而是由 Spring 容器創建,這稱為控制反轉。
Spring 容器在創建被調用者的實例時,會自動將調用者需要的對象實例注入給調用者,這樣,調用者通過 Spring 容器獲得被調用者實例,這稱為依賴注入。
依賴注入主要有兩種實現方式,分別是屬性 setter 注入和構造方法注入。具體介紹如下。
1 屬性 setter 注入
指 IoC 容器使用 setter 方法注入被依賴的實例。通過調用無參構造器或無參 static 工廠方法實例化 bean 后,調用該 bean 的 setter 方法,即可實現基于 setter 的 DI。
2 構造方法注入
指 IoC 容器使用構造方法注入被依賴的實例?;跇嬙炱鞯?DI 通過調用帶參數的構造方法實現,每個參數代表一個依賴。
下面通過屬性 setter 注入的案例演示 Spring 容器是如何實現依賴注入的。步驟如下。
1. 創建 PersonService 接口
在 spring 項目的 com.zsh包下創建一個名為 PersonService 的接口,該接口中包含一個 addPerson() 方法,如下所示。
在 com.zsh 包下創建一個名為 PersonServiceImpl 的類,該類實現了 PersonService 接口,如下所示。
上述代碼中,首先聲明了 personDao 對象,并為其添加 setter 方法,用于依賴注入,然后實現了 PersonDao 接口的 addPerson() 方法,并在方法中調用 save() 方法和輸出一條語句。
3. 在 applicationContext.xml 中添加配置信息
在 applicationContext.xml 配置文件中添加一個 元素,用于實例化 PersonServiceImpl 類,并將 personDao 的實例注入到 personService 中,代碼如下:
4. 編寫測試方法
在 FirstTest 類中創建一個名為 test() 的方法,編輯后如下所示:
5. 運行項目并查看結果
使用 JUnit 測試運行 test() 方法,運行成功后,控制臺的輸出結果如下圖所示。
從輸出結果中可以看出,使用 Spring 容器獲取 userService 的實例后,調用了該實例的 addPerson() 方法,在該方法中又調用了 PersonDao 實現類中的 add() 方法,并輸出了結果。這就是 Spring 容器屬性 setter 注入的方式。
總結
以上是生活随笔為你收集整理的Spring 依赖注入的实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Boot 之 itext导
- 下一篇: Spring Boot 数据国际化