日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring 依赖注入的实现

發(fā)布時間:2025/3/12 javascript 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring 依赖注入的实现 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

依賴注入(Dependency Injection,DI)和控制反轉(zhuǎn)含義相同,它們是從兩個角度描述的同一個概念。

當(dāng)某個 Java 實(shí)例需要另一個 Java 實(shí)例時,傳統(tǒng)的方法是由調(diào)用者創(chuàng)建被調(diào)用者的實(shí)例(例如,使用 new 關(guān)鍵字獲得被調(diào)用者實(shí)例),而使用 Spring 框架后,被調(diào)用者的實(shí)例不再由調(diào)用者創(chuàng)建,而是由 Spring 容器創(chuàng)建,這稱為控制反轉(zhuǎn)。

Spring 容器在創(chuàng)建被調(diào)用者的實(shí)例時,會自動將調(diào)用者需要的對象實(shí)例注入給調(diào)用者,這樣,調(diào)用者通過 Spring 容器獲得被調(diào)用者實(shí)例,這稱為依賴注入。

依賴注入主要有兩種實(shí)現(xiàn)方式,分別是屬性 setter 注入和構(gòu)造方法注入。具體介紹如下。

1 屬性 setter 注入
指 IoC 容器使用 setter 方法注入被依賴的實(shí)例。通過調(diào)用無參構(gòu)造器或無參 static 工廠方法實(shí)例化 bean 后,調(diào)用該 bean 的 setter 方法,即可實(shí)現(xiàn)基于 setter 的 DI。

2 構(gòu)造方法注入
指 IoC 容器使用構(gòu)造方法注入被依賴的實(shí)例。基于構(gòu)造器的 DI 通過調(diào)用帶參數(shù)的構(gòu)造方法實(shí)現(xiàn),每個參數(shù)代表一個依賴。

下面通過屬性 setter 注入的案例演示 Spring 容器是如何實(shí)現(xiàn)依賴注入的。步驟如下。
1. 創(chuàng)建 PersonService 接口
在 spring 項(xiàng)目的 com.zsh包下創(chuàng)建一個名為 PersonService 的接口,該接口中包含一個 addPerson() 方法,如下所示。

package com.zsh;public interface PersonService {public void addPerson(); }
  • 創(chuàng)建接口實(shí)現(xiàn)類 PersonServiceImpl
    在 com.zsh 包下創(chuàng)建一個名為 PersonServiceImpl 的類,該類實(shí)現(xiàn)了 PersonService 接口,如下所示。
  • package com.zsh;public class PersonServiceImpl implements PersonService {// 定義接口聲明private PersonDao personDao;// 提供set()方法,用于依賴注入public void setPersonDao(PersonDao personDao) {this.personDao = personDao;}// 實(shí)現(xiàn)PersonService接口的方法@Overridepublic void addPerson() {personDao.add(); // 調(diào)用PersonDao中的add()方法System.out.println("addPerson()執(zhí)行了...");}}

    上述代碼中,首先聲明了 personDao 對象,并為其添加 setter 方法,用于依賴注入,然后實(shí)現(xiàn)了 PersonDao 接口的 addPerson() 方法,并在方法中調(diào)用 save() 方法和輸出一條語句。

    3. 在 applicationContext.xml 中添加配置信息
    在 applicationContext.xml 配置文件中添加一個 元素,用于實(shí)例化 PersonServiceImpl 類,并將 personDao 的實(shí)例注入到 personService 中,代碼如下:

    <bean id="personService" class="com.zsh.PersonServiceImpl"><!-- 將personDao實(shí)例注入personService實(shí)例中 --><property name="personDao" ref="personDao"/> </bean>

    4. 編寫測試方法
    在 FirstTest 類中創(chuàng)建一個名為 test() 的方法,編輯后如下所示:

    @Test public void test() {// 定義Spring配置文件的路徑String xmlPath = "applicationContext.xml";// 初始化Spring容器,加載配置文件ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);// 通過容器獲取personService實(shí)例PersonService personService = (PersonService) applicationContext.getBean("personService");// 調(diào)用personService的addPerson()方法personService.addPerson(); }

    5. 運(yùn)行項(xiàng)目并查看結(jié)果
    使用 JUnit 測試運(yùn)行 test() 方法,運(yùn)行成功后,控制臺的輸出結(jié)果如下圖所示。

    從輸出結(jié)果中可以看出,使用 Spring 容器獲取 userService 的實(shí)例后,調(diào)用了該實(shí)例的 addPerson() 方法,在該方法中又調(diào)用了 PersonDao 實(shí)現(xiàn)類中的 add() 方法,并輸出了結(jié)果。這就是 Spring 容器屬性 setter 注入的方式。

    總結(jié)

    以上是生活随笔為你收集整理的Spring 依赖注入的实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。