亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Spring依賴注入(DI)兩種方式的示例詳解

 更新時間:2022年06月08日 15:01:39   作者:夏志121  
這篇文章主要介紹了Spring依賴注入(DI)的兩種方式:setter注入和構造器注入。文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下

一、依賴注入方式

思考:向一個類中傳遞數(shù)據(jù)的方式有幾種?

  • 普通方法(set方法)
  • 構造方法

思考:依賴注入描述了在容器中建立bean與bean之間依賴關系的過程,如果bean運行需要的是數(shù)字或字符串呢?

  • 引用類型
  • 簡單類型(基本數(shù)據(jù)類型與String)

依賴注入方式:

setter注入

  • 簡單類型
  • 引用類型

構造器注入

  • 簡單類型
  • 引用類型

二、setter注入

引用類型

在bean中定義引用類型屬性并提供可訪問的set方法

import com.itheima.dao.BookDao;
import com.itheima.service.BookService;
 
public class BookServiceImpl implements BookService {
    private BookDao bookDao;
 
    public void save() {
        System.out.println("book service save ...");
        bookDao.save();
    }
    public void setBookDao(BookDao bookDao) {
        this.bookDao = bookDao;
    }
}

配置中使用property標簽ref屬性注入引用類型對象

<!--注入引用類型-->
    <bean id="bookService" class="com.itheima.service.impl.BookServiceImpl">
        <!--property標簽:設置注入屬性-->
        <!--name屬性:設置注入的屬性名,實際是set方法對應的名稱-->
        <!--ref屬性:設置注入引用類型bean的id或name-->
        <property name="bookDao" ref="bookDao"/>
        <property name="userDao" ref="userDao"/>
    </bean>

簡單類型

BookDaoImpl實現(xiàn)類:

在bean中定義引用類型屬性并提供可訪問的set方法

import com.itheima.dao.BookDao;
 
public class BookDaoImpl implements BookDao {
 
    private String databaseName;
    private int connectionNum;
 
    //setter注入需要提供要注入對象的set方法
    public void setConnectionNum(int connectionNum) {
        this.connectionNum = connectionNum;
    }
 
    //setter注入需要提供要注入對象的set方法
    public void setDatabaseName(String databaseName) {
        this.databaseName = databaseName;
    }
 
    public void save() {
        System.out.println("book dao save ..." + databaseName + "," + connectionNum);
    }
}

applicationContext.xml配置:

配置中使用property屬性value注入簡單類型對象

<!--注入簡單類型-->
    <bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl">
        <!--property標簽:設置注入屬性-->
        <!--name屬性:設置注入的屬性名,實際是set方法對應的名稱-->
        <!--value屬性:設置注入簡單類型數(shù)據(jù)值-->
        <property name="connectionNum" value="100"/>
        <property name="databaseName" value="mysql"/>
    </bean>

三、構造器注入

引用類型

在bean中定義引用類型屬性并提供可訪問的構造方法

public class BookServiceImpl implements BookService{
    private BookDao bookDao;
    private UserDao userDao;
 
    public BookServiceImpl(BookDao bookDao, UserDao userDao) {
        this.bookDao = bookDao;
        this.userDao = userDao;
    }
}

配置中使用constructor-arg標簽ref屬性注入引用類型對象

<bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"/>
<bean id="userDao" class="com.itheima.dao.impl.UserDaoImpl"/>
 
<bean id="bookService" class="com.itheima.service.impl.BookServiceImpl">
        <constructor-arg name="userDao" ref="userDao"/>
        <constructor-arg name="bookDao" ref="bookDao"/>
    </bean>

簡單類型

在bean中定義引用類型屬性并提供可訪問的構造方法

public class BookDaoImpl implements BookDao {
    private String databaseName;
    private int connectionNum;
 
    public BookDaoImpl(String databaseName, int connectionNum) {
        this.databaseName = databaseName;
        this.connectionNum = connectionNum;
    }
}

配置中使用constructor-arg標簽ref屬性注入引用類型對象

<bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl">
        <!--根據(jù)構造方法參數(shù)名稱注入-->
        <constructor-arg name="connectionNum" value="10"/>
        <constructor-arg name="databaseName" value="mysql"/>
 </bean>

參數(shù)適配(了解)

配置中使用constructor-arg標簽type屬性注入引用類型對象

<!--解決形參名稱的問題,與形參名不耦合-->
    <bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl">
        <!--根據(jù)構造方法參數(shù)類型注入-->
        <constructor-arg type="int" value="10"/>
        <constructor-arg type="java.lang.String" value="mysql"/>
    </bean>

配置中使用constructor-arg標簽index屬性注入引用類型對象

 <!--解決參數(shù)類型重復問題,使用位置解決參數(shù)匹配-->
    <bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl">
        <!--根據(jù)構造方法參數(shù)位置注入-->
        <constructor-arg index="0" value="mysql"/>
        <constructor-arg index="1" value="100"/>
    </bean>

四、依賴注入方式選擇

1、強制依賴使用構造器進入,使用setter注入有概率不進入注入導致null對象出現(xiàn)

2、可選依賴使用setter注入進行,靈活性強

3、Spring框架倡導使用構造器,第三方框架內(nèi)部大多數(shù)采用構造器注入的形式進行數(shù)據(jù)初始化,相對嚴謹

4、如果有必要可以兩者同時使用,使用構造器注入完成強制依賴的注入,使用setter注入完成可依賴的注入

5、實際開發(fā)過程中還要根據(jù)實際情況分析,如果受控對象沒有提供setter方法就必須使用構造器注入

6、自己開發(fā)的模塊推薦使用setter注入

到此這篇關于Spring依賴注入(DI)兩種方式的示例詳解的文章就介紹到這了,更多相關Spring依賴注入內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • SpringCloud實現(xiàn)SSO 單點登錄的示例代碼

    SpringCloud實現(xiàn)SSO 單點登錄的示例代碼

    作為分布式項目,單點登錄是必不可少的,這篇文章主要介紹了SpringCloud實現(xiàn)SSO 單點登錄的示例代碼,非常具有實用價值,需要的朋友可以參考下
    2019-01-01
  • 淺談Java隨機數(shù)的原理、偽隨機和優(yōu)化

    淺談Java隨機數(shù)的原理、偽隨機和優(yōu)化

    這篇文章主要介紹了淺談Java隨機數(shù)的原理、偽隨機和優(yōu)化,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • Java面向?qū)ο蠡A詳解

    Java面向?qū)ο蠡A詳解

    這篇文章主要介紹了JJava面向?qū)ο蟮幕A,文中有非常詳細的代碼示例,對正在學習java基礎的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-10-10
  • Java org.w3c.dom.Document 類方法引用報錯

    Java org.w3c.dom.Document 類方法引用報錯

    這篇文章主要介紹了Java org.w3c.dom.Document 類方法引用報錯的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 詳解Java中使用泛型實現(xiàn)快速排序算法的方法

    詳解Java中使用泛型實現(xiàn)快速排序算法的方法

    這篇文章主要介紹了Java中使用泛型實現(xiàn)快速排序算法的方法,快速排序的平均時間復雜度為(n\log n),文中的方法立足于基礎而并沒有考慮優(yōu)化處理,需要的朋友可以參考下
    2016-05-05
  • java中synchronized鎖的升級過程

    java中synchronized鎖的升級過程

    這篇文章主要介紹了java中synchronized鎖的升級過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • SpringBoot服務上實現(xiàn)接口限流的方法

    SpringBoot服務上實現(xiàn)接口限流的方法

    這篇文章主要介紹了SpringBoot服務上實現(xiàn)接口限流的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • SpringSecurity實現(xiàn)前后端分離登錄token認證詳解

    SpringSecurity實現(xiàn)前后端分離登錄token認證詳解

    目前市面上比較流行的權限框架主要實Shiro和Spring Security,這兩個框架各自側重點不同,各有各的優(yōu)劣,本文將給大家詳細介紹SpringSecurity如何實現(xiàn)前后端分離登錄token認證
    2023-06-06
  • Java CompletableFuture 異步超時實現(xiàn)深入研究

    Java CompletableFuture 異步超時實現(xiàn)深入研究

    這篇文章主要為大家介紹了Java CompletableFuture 異步超時實現(xiàn)深入研究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • java導出數(shù)據(jù)庫中Excel表格數(shù)據(jù)的方法

    java導出數(shù)據(jù)庫中Excel表格數(shù)據(jù)的方法

    這篇文章主要為大家詳細介紹了java導出數(shù)據(jù)庫中Excel表格數(shù)據(jù)的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08

最新評論