欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解Spring?Bean的集合注入和自動(dòng)裝配

 更新時(shí)間:2022年06月11日 09:14:06   作者:倔強(qiáng)的牛角  
這篇文章主要為大家詳細(xì)介紹了Spring?Bean中集合注入和自動(dòng)裝配的方法,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)有一定的幫助,需要的可以參考一下

一、Spring Bean 集合注入

【Spring學(xué)習(xí)筆記(三)】已經(jīng)講了怎么注入基本數(shù)據(jù)類型和引用數(shù)據(jù)類型,接下來(lái)介紹如何注入比較特殊的數(shù)據(jù)類型——集合

集合常用標(biāo)簽

集合注入,用法也很簡(jiǎn)單,只需要在 Bean 標(biāo)簽下的 <property><constructor-arg>元素中添加以下集合的標(biāo)簽,再通過(guò)value或者ref進(jìn)行屬性注入

標(biāo)簽說(shuō)明
<list>用于注入 list 集合,允許重復(fù)
<set>用于注入 set集合,不允許重復(fù)
<map>用于注入 key-value 的map集合, key 和 value 可以是任意類型
<props>用于注入 key-value 的properties集合,key 和 value 必須是是字符串類型

注意: List的底層也是通過(guò)數(shù)組實(shí)現(xiàn)的,所以<list><array>標(biāo)簽是可以混用

案例

1.創(chuàng)建一個(gè)Collection類和Dept類,代碼如下

/*Collection類*/
public class Collection {
    //1.數(shù)組
    private int[] array;
    //2.list集合
    private List<Dept> list;
    //3。set集合
    private Set<Dept> set;
    //4.map集合
    private Map<String, String> map;
    //5.properties集合
    private Properties properties;
    //打印各個(gè)集合
    public void fmt() {
        System.out.println("打印array:" + Arrays.toString(array));
        System.out.println("打印List:" + list);
        System.out.println("打印Set:" + set);
        System.out.println("打印Map:" + map);
        System.out.println("打印Properties:" + properties);
    }
    -----省略setter方法-----    
}
/*Dept類*/
public class Dept {
    //部門編號(hào)
    private int deptNo;
    //部門名稱
    private String deptName;
    @Override
    public String toString() {
        return "Dept{" +
            "deptNo=" + deptNo +
            ", deptName='" + deptName + '\'' +
            '}';
    }
    -----省略setter方法----- 
}

2.編寫(xiě)spring配置文件

<!--部門類屬性注入-->
<bean id="dept" class="com.bighorn.pojo.Dept">
    <property name="deptNo" value="1"/>
    <property name="deptName" value="后端組"/>
</bean>

<!--Collection類屬性注入-->
<bean id="collection" class="com.bighorn.pojo.Collection">
    <!--數(shù)組類型-->
    <property name="array">
        <array>
            <value>114514</value>
            <value>114514</value>
            <value>114514</value>
        </array>
    </property>
    <!--List 類型-->
    <property name="list">
        <list>
            <ref bean="dept"/>
            <ref bean="dept"/>
            <ref bean="dept"/>
        </list>
    </property>
    <!--Set 類型-->
    <property name="set">
        <set>
            <ref bean="dept"/>
            <ref bean="dept"/>
            <ref bean="dept"/>
        </set>
    </property>
    <!--Map 類型-->
    <property name="map">
        <map>
            <entry key="name" value="bighorn"/>
            <entry key="age" value="18"/>
            <entry key="sex" value="man"/>
        </map>
    </property>
    <!--Properties 類型-->
    <property name="properties">
        <props>
            <prop key="username">root</prop>
            <prop key="password">123456</prop>
        </props>
    </property>
</bean>

3.編寫(xiě)運(yùn)行程序

public static void main(String[] args) {
    //獲取IoC容器
    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    //從容器中獲取對(duì)象
    Collection collection = context.getBean("collection", Collection.class);
    //調(diào)用方法打印各個(gè)集合
    collection.fmt();
}

運(yùn)行結(jié)果如下

二、Spring Bean自動(dòng)裝配

Spring 在 Bean 與 Bean 之間建立依賴關(guān)系的行為稱為 “裝配”

Spring Bean 屬性注入 前面學(xué)習(xí)了,在 spring配置文件中通過(guò) <constructor-arg><property> 中的 ref 屬性,手動(dòng)維護(hù) Bean 與 Bean 之間的依賴關(guān)系的,即手動(dòng)裝配

手動(dòng)裝配圖

什么是自動(dòng)裝配

如果容器中Bean很多,依賴關(guān)系又非常復(fù)雜,此時(shí)手動(dòng)裝配就略顯吃力且繁瑣了,所以Spring 框架為我們提供了 “自動(dòng)裝配” 功能,提高開(kāi)發(fā)效率。

Spring 自動(dòng)裝配:Spring IoC容器根據(jù)自動(dòng)裝配方式,為指定的 Bean 從應(yīng)用上下文(AppplicationContext 容器)自動(dòng)查找并自動(dòng)注入它所依賴的 Bean。

自動(dòng)裝配的方式

Spring 默認(rèn)不支持自動(dòng)裝配的。使用自動(dòng)裝配,則需要對(duì) Spring XML 配置文件中 <bean> 元素的 autowire 屬性進(jìn)行設(shè)置,此時(shí)就不需要ref屬性了。

屬性值說(shuō)明
byName按名稱自動(dòng)裝配。 Bean 的 id 或 name 屬性值與這個(gè)對(duì)象屬性的名稱相同
byType按類型自動(dòng)裝配。 Bean 的 class 屬性值與這個(gè)對(duì)象屬性的類型相匹配
constructor按構(gòu)造器參數(shù)自動(dòng)裝配。
default默認(rèn)采用上一級(jí)元素 <beans> 設(shè)置的自動(dòng)裝配方式(default-autowire)進(jìn)行裝配。
no默認(rèn)值,表示不使用自動(dòng)裝配。

案例

1.創(chuàng)建員工類Employee和部門類Dept,添加各個(gè)成員變量的setter方法

/*員工類Employee*/
public class Employee {
    //員工編號(hào)
    private String empNo;
    //員工姓名
    private String empName;
    //部門信息
    private Dept dept;
    //各個(gè)屬性的setter方法
    public void setEmpNo(int empNo) {
        this.empNo = empNo;
    }
    public void setEmpName(String empName) {
        this.empName = empName;
    }
    public void setDept(Dept dept) {
        this.dept = dept;
    }
    ----省略toString方法------  
}

/*部門類Dept*/
public class Dept {
    //部門編號(hào)
    private String deptNo;
    //部門名稱
    private String deptName;
    //各個(gè)屬性的setter方法
    public void setDeptNo(int deptNo) {
        this.deptNo = deptNo;
    }
    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }
    ----省略toString方法------
}

2.編寫(xiě)spring配置文件

<!--部門類屬性注入-->
<bean id="dept" class="com.bighorn.pojo.Dept">
    <property name="deptNo" value="2"/>
    <property name="deptName" value="前端組"/>
</bean>
<!--員工類屬性注入-->
<bean id="employee" class="com.bighorn.pojo.Employee" autowire="byType">
    <property name="empNo" value="114514"/>
    <property name="empName" value="lzh"/>
</bean>

3.編寫(xiě)運(yùn)行程序

public static void main(String[] args) {
    //獲取IoC容器
    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    //從容器中獲取對(duì)象
    Employee employee = context.getBean("employee", Employee.class);
    System.out.println(employee);
}

結(jié)果如下圖

注意點(diǎn)

  • 自動(dòng)裝配用于引用類型依賴注入,不能對(duì)簡(jiǎn)單類型進(jìn)行操作
  • 使用按類型裝配時(shí)(byType)必須保障容器中相同類型的bean唯一,推薦使用
  • 使用按名稱裝配時(shí)(byName)必須保障容器中具有指定名稱的bean,因變量名與配置耦合,不推薦使用
  • 自動(dòng)裝配優(yōu)先級(jí)低于setter注入與構(gòu)造器注入,同時(shí)出現(xiàn)時(shí)自動(dòng)裝配配置失效

以上就是詳解Spring Bean的集合注入和自動(dòng)裝配的詳細(xì)內(nèi)容,更多關(guān)于Spring Bean集合注入 自動(dòng)裝配的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java實(shí)現(xiàn)常見(jiàn)排序算法的優(yōu)化

    Java實(shí)現(xiàn)常見(jiàn)排序算法的優(yōu)化

    今天給大家?guī)?lái)的是關(guān)于Java的相關(guān)知識(shí),文章圍繞著Java實(shí)現(xiàn)常見(jiàn)排序算法的優(yōu)化展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-01-01
  • java郵件收發(fā)功能實(shí)現(xiàn)代碼

    java郵件收發(fā)功能實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了java郵件收發(fā)功能實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的朋友可以參考一下
    2016-06-06
  • 基于Arrays.sort()和lambda表達(dá)式

    基于Arrays.sort()和lambda表達(dá)式

    這篇文章主要介紹了Arrays.sort()和lambda表達(dá)式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • JavaWeb簡(jiǎn)單用戶登錄注冊(cè)實(shí)例代碼(有驗(yàn)證碼)

    JavaWeb簡(jiǎn)單用戶登錄注冊(cè)實(shí)例代碼(有驗(yàn)證碼)

    這篇文章主要介紹了JavaWeb簡(jiǎn)單用戶登錄注冊(cè)實(shí)例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • springboot整合quartz實(shí)現(xiàn)定時(shí)任務(wù)示例

    springboot整合quartz實(shí)現(xiàn)定時(shí)任務(wù)示例

    spring支持多種定時(shí)任務(wù)的實(shí)現(xiàn)。我們來(lái)介紹下使用spring的定時(shí)器和使用quartz定時(shí)器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-04-04
  • java實(shí)現(xiàn)圖形化界面計(jì)算器

    java實(shí)現(xiàn)圖形化界面計(jì)算器

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)圖形化界面計(jì)算器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • Java連接MongoDB的常用方法詳解

    Java連接MongoDB的常用方法詳解

    這篇文章主要為大家詳細(xì)介紹一下Java語(yǔ)言連接MongoDB的常用方法以及實(shí)現(xiàn)增刪改查功能的示例代碼,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-07-07
  • Java中由substring方法引發(fā)的內(nèi)存泄漏詳解

    Java中由substring方法引發(fā)的內(nèi)存泄漏詳解

    這篇文章主要介紹了Java中由substring方法引發(fā)的內(nèi)存泄漏詳解,涉及substring方法引發(fā)的內(nèi)存泄漏簡(jiǎn)介,substring的作用和實(shí)現(xiàn)原理等相關(guān)內(nèi)容,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2017-12-12
  • 詳解Spring中Bean的加載的方法

    詳解Spring中Bean的加載的方法

    本篇文章主要介紹了Spring中Bean的加載的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-04-04
  • 手把手教你如何獲取微信用戶openid

    手把手教你如何獲取微信用戶openid

    眾所周知小程序的openid相當(dāng)重要,它是用戶的唯一標(biāo)識(shí)id,牽扯的支付,登錄,授權(quán)等,下面這篇文章主要給大家介紹了關(guān)于如何獲取微信用戶openid的相關(guān)資料,需要的朋友可以參考下
    2023-02-02

最新評(píng)論