最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Spring?Bean的集合注入和自動裝配

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

一、Spring Bean 集合注入

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

集合常用標簽

集合注入,用法也很簡單,只需要在 Bean 標簽下的 <property><constructor-arg>元素中添加以下集合的標簽,再通過value或者ref進行屬性注入

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

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

案例

1.創(chuàng)建一個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;
    //打印各個集合
    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 {
    //部門編號
    private int deptNo;
    //部門名稱
    private String deptName;
    @Override
    public String toString() {
        return "Dept{" +
            "deptNo=" + deptNo +
            ", deptName='" + deptName + '\'' +
            '}';
    }
    -----省略setter方法----- 
}

2.編寫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.編寫運行程序

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

運行結果如下

二、Spring Bean自動裝配

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

Spring Bean 屬性注入 前面學習了,在 spring配置文件中通過 <constructor-arg><property> 中的 ref 屬性,手動維護 Bean 與 Bean 之間的依賴關系的,即手動裝配

手動裝配圖

什么是自動裝配

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

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

自動裝配的方式

Spring 默認不支持自動裝配的。使用自動裝配,則需要對 Spring XML 配置文件中 <bean> 元素的 autowire 屬性進行設置,此時就不需要ref屬性了。

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

案例

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

/*員工類Employee*/
public class Employee {
    //員工編號
    private String empNo;
    //員工姓名
    private String empName;
    //部門信息
    private Dept dept;
    //各個屬性的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 {
    //部門編號
    private String deptNo;
    //部門名稱
    private String deptName;
    //各個屬性的setter方法
    public void setDeptNo(int deptNo) {
        this.deptNo = deptNo;
    }
    public void setDeptName(String deptName) {
        this.deptName = deptName;
    }
    ----省略toString方法------
}

2.編寫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.編寫運行程序

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

結果如下圖

注意點

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

以上就是詳解Spring Bean的集合注入和自動裝配的詳細內容,更多關于Spring Bean集合注入 自動裝配的資料請關注腳本之家其它相關文章!

相關文章

  • SpringBoot升級到2.7.18后不兼容的地方及解決

    SpringBoot升級到2.7.18后不兼容的地方及解決

    這篇文章主要介紹了SpringBoot升級到2.7.18后不兼容的地方及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • SpringSecurity實現(xiàn)前后端分離的示例詳解

    SpringSecurity實現(xiàn)前后端分離的示例詳解

    Spring Security默認提供賬號密碼認證方式,具體實現(xiàn)是在UsernamePasswordAuthenticationFilter 中,這篇文章主要介紹了SpringSecurity實現(xiàn)前后端分離的示例詳解,需要的朋友可以參考下
    2023-03-03
  • Mybatis中如何設置sqlSession自動提交

    Mybatis中如何設置sqlSession自動提交

    在MyBatis中,默認情況下,獲取的SqlSession對象不會自動提交事務,這意味著在進行更新、刪除或插入等操作后,需要顯式調用commit方法來提交事務,但是,可以在獲取SqlSession時通過將openSession方法的參數(shù)設置為true
    2024-09-09
  • 使用Mybatis時SqlSessionFactory對象總是報空指針

    使用Mybatis時SqlSessionFactory對象總是報空指針

    本文主要介紹了使用Mybatis時SqlSessionFactory對象總是報空指針,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-09-09
  • 關于EntityWrapper的in用法

    關于EntityWrapper的in用法

    這篇文章主要介紹了關于EntityWrapper的in用法詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Mybatis關聯(lián)查詢結果集對象嵌套的具體使用

    Mybatis關聯(lián)查詢結果集對象嵌套的具體使用

    在查詢時經常出現(xiàn)一對多”的關系,所有會出現(xiàn)嵌套對象的情況,本文主要介紹了Mybatis關聯(lián)查詢結果集對象嵌套的具體使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Java與C++分別用遞歸實現(xiàn)漢諾塔詳解

    Java與C++分別用遞歸實現(xiàn)漢諾塔詳解

    漢諾塔問題是一個經典的問題。漢諾塔(Hanoi Tower),又稱河內塔,源于印度一個古老傳說。本文將用Java與C++分別實現(xiàn),感興趣的可以學習一下
    2022-05-05
  • Java數(shù)據庫連接池技術的入門教程

    Java數(shù)據庫連接池技術的入門教程

    這篇文章主要給大家介紹了關于Java數(shù)據庫連接池技術的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • Java語言實現(xiàn)對MySql數(shù)據庫中數(shù)據的增刪改查操作的代碼

    Java語言實現(xiàn)對MySql數(shù)據庫中數(shù)據的增刪改查操作的代碼

    這篇文章主要介紹了Java語言實現(xiàn)對MySql數(shù)據庫中數(shù)據的增刪改查操作的代碼,實現(xiàn)了連接數(shù)據庫,和數(shù)據庫的增刪改查操作,有興趣的可以了解一下。
    2016-12-12
  • Apache?log4j2-RCE?漏洞復現(xiàn)及修復建議(CVE-2021-44228)

    Apache?log4j2-RCE?漏洞復現(xiàn)及修復建議(CVE-2021-44228)

    Apache?Log4j2是一款Java日志框架,大量應用于業(yè)務系統(tǒng)開發(fā)。2021年11月24日,阿里云安全團隊向Apache官方報告了Apache?Log4j2遠程代碼執(zhí)行漏洞(CVE-2021-44228),本文給大家介紹Apache?log4j2-RCE?漏洞復現(xiàn)(CVE-2021-44228)的相關知識,感興趣的朋友一起看看吧
    2021-12-12

最新評論

蓝田县| 科技| 阿拉尔市| 芒康县| 大埔区| 钦州市| 买车| 虞城县| 怀安县| 甘泉县| 清新县| 玉溪市| 井冈山市| 乌拉特后旗| 江达县| 连山| 古田县| 高密市| 佛学| 高邮市| 图们市| 确山县| 额尔古纳市| 靖远县| 庆城县| 西峡县| 徐州市| 佳木斯市| 屏东县| 青龙| 宜宾市| 华蓥市| 耒阳市| 长汀县| 双柏县| 易门县| 阳曲县| 墨竹工卡县| 崇文区| 西平县| 会同县|