spring配置详解-复杂类型注入
生活随笔
收集整理的這篇文章主要介紹了
spring配置详解-复杂类型注入
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
復(fù)雜類型注入,剛才都是屬性,這個(gè)叫注入方式,下面再來一個(gè)復(fù)雜類型注入,來看一下復(fù)雜類型注入行為,復(fù)雜類型注入呢,指的是,咱們剛才的注入類型,無非就是值或者對象,假設(shè)遇到數(shù)組,List,Map,Properties,遇到這種屬性,咱們該如何來完成注入,那這個(gè)比較簡單,就是看人家寫法怎么寫的,咱們直接看例子,這個(gè)例子就不需要新建包了,在這里再新建一個(gè)class,叫做CollectionBean,然后在這個(gè)Bean當(dāng)中,聲明四個(gè)屬性,String數(shù)組,Object數(shù)組,這個(gè)叫arr,用這個(gè)屬性來測試,數(shù)組類型值怎么注入,數(shù)組類型注入,咱們再來一個(gè)List,咱們再來看看List是如何來注入,自然也少不了Map,大家看,map類型注入,這里我說一下,list和set注入方式是一樣的,然后再往下,最后一個(gè)就是咱們的Properties,這個(gè)類大家都用過吧,肯定用過,用過propertie文件,肯定那這個(gè)Properties類讀取過,Properties說白了就是一個(gè)Map,鍵值對都是String,因?yàn)榕渲梦募兄挥形谋拘畔?properties類型的注入,四個(gè)類型如何注入,生成get/set方法,那這個(gè)對象準(zhǔn)備好之后,我們到配置文件當(dāng)中
package com.learn.c_injection;import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Properties;public class CollectionBean {/*** 數(shù)組類型注入*/private Object[] arr;/*** List/set類型注入*/private List list;/*** map類型注入*/private Map map;private Properties prop;public Object[] getArr() {return arr;}public void setArr(Object[] arr) {this.arr = arr;}public List getList() {return list;}public void setList(List list) {this.list = list;}public Map getMap() {return map;}public void setMap(Map map) {this.map = map;}public Properties getProp() {return prop;}public void setProp(Properties prop) {this.prop = prop;}@Overridepublic String toString() {return "CollectionBean [arr=" + Arrays.toString(arr) + ", list=" + list + ", map=" + map + ", prop=" + prop+ "]";}}
然后分隔線下邊咱們來看一下,復(fù)雜類型注入,那第一個(gè),array就是數(shù)組,來一個(gè)bean,然后有name,還有class,必須的,class咱們叫CollectionBean,咱們叫做cb,接下來我們給bean當(dāng)中,注入屬性,咱們使用Property來做,然后name先找arr,到這開始看好,這個(gè)arr這個(gè)屬性,就像Object數(shù)組,所以,普通類型值可能只有一個(gè),不管是引用還是對象,而咱們數(shù)組的話,這里面是可以放多個(gè)值或者多個(gè)對象,那這里面先說,如果你真的只有一個(gè)值或者一個(gè)對象的話,那么你可以像注入普通屬性一樣,使用value,或者ref來注入,這是數(shù)組只有一個(gè)屬性的情況,比如這里咱們來一個(gè)tom,在這寫一下,如果數(shù)組中只準(zhǔn)備注入一個(gè)值,或者對象,那么直接使用咱們的value或ref即可
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd "><!-- set方式注入 --><bean name="user" class="com.learn.bean.User"><!-- 為User對象中名為name的屬性注入tom作為值 --><property name="name" value="tom"></property><property name="age" value="18"></property><!-- 為car屬性注入下方配置的car對象 --><property name="car" ref="car"></property></bean><!-- 將car對象配置到容器中 --><bean name="car" class="com.learn.bean.Car"><property name="name" value="蘭博基尼"></property><property name="color" value="黃色"></property></bean><!-- ============================================================= --><!-- 構(gòu)造函數(shù)注入 --><bean name="user2" class="com.learn.bean.User"><!-- name屬性:構(gòu)造函數(shù)的參數(shù)名 --><!-- index屬性:構(gòu)造函數(shù)的參數(shù)索引 --><!-- type屬性:構(gòu)造函數(shù)的參數(shù)類型 --><constructor-arg name="name" value="999" index="0" type="java.lang.Integer"></constructor-arg><constructor-arg name="car" ref="car" index="1"></constructor-arg></bean><!-- ============================================================= --><!-- p名稱空間注入 1.導(dǎo)入p名稱空間 xmlns:p="http://www.springframework.org/schema/p"2.使用p:屬性完成注入|-值類型: p:屬性名="值"|-對象類型: p:屬性名-ref="bean名稱"--><bean name="user3" class="com.learn.bean.User" p:name="jack" p:age="20" p:car-ref="car"></bean><!-- ============================================================= --><!-- spel注入:spring Expression Language spring表達(dá)式語言 --><bean name="user4" class="com.learn.bean.User" ><property name="name" value="#{user.name}"></property><property name="age" value="#{user3.age}"></property><property name="car" ref="car"></property></bean><!-- ============================================================= --><!-- 復(fù)雜類型注入 --><!-- array注入 --><bean name="cb" class="com.learn.c_injection.CollectionBean"><!-- 如果數(shù)組中只準(zhǔn)備注入一個(gè)值(對象),直接使用value|ref即可 --><property name="arr" value="tom"></property></bean>
</beans>
給他這個(gè)CollectionBean生成一個(gè)toString方法,剛才咱們聲明的cb,類型是不是CollectionBean,這塊咱們cb,轉(zhuǎn)換的話也是CollectionBean,然后打印cb,是不是就把tom注入到數(shù)組當(dāng)中了
@Testpublic void fun5() {/*** 1.創(chuàng)建容器*/ApplicationContext ac = new ClassPathXmlApplicationContext("com/learn/c_injection/applicationContext.xml");CollectionBean cb = (CollectionBean)ac.getBean("cb");System.out.println(cb);}
User空參構(gòu)造方法
User(Integer name, Car car)
User空參構(gòu)造方法
User空參構(gòu)造方法
CollectionBean [arr=[tom], list=null, map=null, prop=null]
arr是一個(gè)數(shù)組,接下來咱們再來看,如果一個(gè)值不夠,然后咱們再來一個(gè)property,name等于arr,然后看好,多個(gè)值怎么辦呢,就需要使用array的子元素,就表示要為數(shù)組注入值了,那數(shù)組注入值的話,value元素來注入值類型的,咱們有tom,jerry,那arr就有值類型的,那對象怎么注入,ref屬性的,ref使用一個(gè)Bean屬性,比如咱們把user4放到數(shù)組中來,這樣就數(shù)組有三個(gè)元素,兩個(gè)值類型的,和一個(gè)user,那這個(gè)還是array注入,還是array注入,這個(gè)是多個(gè)元素注入,那接下來咱們在Demo里面測試一下
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd "><!-- set方式注入 --><bean name="user" class="com.learn.bean.User"><!-- 為User對象中名為name的屬性注入tom作為值 --><property name="name" value="tom"></property><property name="age" value="18"></property><!-- 為car屬性注入下方配置的car對象 --><property name="car" ref="car"></property></bean><!-- 將car對象配置到容器中 --><bean name="car" class="com.learn.bean.Car"><property name="name" value="蘭博基尼"></property><property name="color" value="黃色"></property></bean><!-- ============================================================= --><!-- 構(gòu)造函數(shù)注入 --><bean name="user2" class="com.learn.bean.User"><!-- name屬性:構(gòu)造函數(shù)的參數(shù)名 --><!-- index屬性:構(gòu)造函數(shù)的參數(shù)索引 --><!-- type屬性:構(gòu)造函數(shù)的參數(shù)類型 --><constructor-arg name="name" value="999" index="0" type="java.lang.Integer"></constructor-arg><constructor-arg name="car" ref="car" index="1"></constructor-arg></bean><!-- ============================================================= --><!-- p名稱空間注入 1.導(dǎo)入p名稱空間 xmlns:p="http://www.springframework.org/schema/p"2.使用p:屬性完成注入|-值類型: p:屬性名="值"|-對象類型: p:屬性名-ref="bean名稱"--><bean name="user3" class="com.learn.bean.User" p:name="jack" p:age="20" p:car-ref="car"></bean><!-- ============================================================= --><!-- spel注入:spring Expression Language spring表達(dá)式語言 --><bean name="user4" class="com.learn.bean.User" ><property name="name" value="#{user.name}"></property><property name="age" value="#{user3.age}"></property><property name="car" ref="car"></property></bean><!-- ============================================================= --><!-- 復(fù)雜類型注入 --><bean name="cb" class="com.learn.c_injection.CollectionBean"><!-- 如果數(shù)組中只準(zhǔn)備注入一個(gè)值(對象),直接使用value|ref即可 --><!-- <property name="arr" value="tom"></property> --><property name="arr"><!-- array注入 --><array><value>tom</value><value>jerry</value><ref bean="user4"/></array></property></bean>
</beans>
@Testpublic void fun5() {/*** 1.創(chuàng)建容器*/ApplicationContext ac = new ClassPathXmlApplicationContext("com/learn/c_injection/applicationContext.xml");CollectionBean cb = (CollectionBean)ac.getBean("cb");System.out.println(cb);}
User空參構(gòu)造方法
User(Integer name, Car car)
User空參構(gòu)造方法
User空參構(gòu)造方法
CollectionBean [arr=[tom, jerry, User [name=tom, age=20, car=Car [name=蘭博基尼, color=黃色]]], list=null, map=null, prop=null]
你看看arr里面,也是tom,jerry,是不是這兩個(gè)字符串,這user是咱們注入的一個(gè)對象,這樣的話咱們的array就研究完了,List還是在這個(gè)bean當(dāng)中,然后再書寫property,property再給list賦一個(gè)值,list其實(shí)和array是一樣的,如果你這個(gè)list當(dāng)中只有一個(gè)值,那你可以同樣使用value或者ref注入,這里我們要把它變成ref,這個(gè)名字我們換一下叫做jack
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd "><!-- set方式注入 --><bean name="user" class="com.learn.bean.User"><!-- 為User對象中名為name的屬性注入tom作為值 --><property name="name" value="tom"></property><property name="age" value="18"></property><!-- 為car屬性注入下方配置的car對象 --><property name="car" ref="car"></property></bean><!-- 將car對象配置到容器中 --><bean name="car" class="com.learn.bean.Car"><property name="name" value="蘭博基尼"></property><property name="color" value="黃色"></property></bean><!-- ============================================================= --><!-- 構(gòu)造函數(shù)注入 --><bean name="user2" class="com.learn.bean.User"><!-- name屬性:構(gòu)造函數(shù)的參數(shù)名 --><!-- index屬性:構(gòu)造函數(shù)的參數(shù)索引 --><!-- type屬性:構(gòu)造函數(shù)的參數(shù)類型 --><constructor-arg name="name" value="999" index="0" type="java.lang.Integer"></constructor-arg><constructor-arg name="car" ref="car" index="1"></constructor-arg></bean><!-- ============================================================= --><!-- p名稱空間注入 1.導(dǎo)入p名稱空間 xmlns:p="http://www.springframework.org/schema/p"2.使用p:屬性完成注入|-值類型: p:屬性名="值"|-對象類型: p:屬性名-ref="bean名稱"--><bean name="user3" class="com.learn.bean.User" p:name="jack" p:age="20" p:car-ref="car"></bean><!-- ============================================================= --><!-- spel注入:spring Expression Language spring表達(dá)式語言 --><bean name="user4" class="com.learn.bean.User" ><property name="name" value="#{user.name}"></property><property name="age" value="#{user3.age}"></property><property name="car" ref="car"></property></bean><!-- ============================================================= --><!-- 復(fù)雜類型注入 --><bean name="cb" class="com.learn.c_injection.CollectionBean"><!-- 如果數(shù)組中只準(zhǔn)備注入一個(gè)值(對象),直接使用value|ref即可 --><!-- <property name="arr" value="tom"></property> --><property name="arr"><!-- array注入 --><array><value>tom</value><value>jerry</value><ref bean="user4"/></array></property><property name="list" value="jack"></property></bean>
</beans>
再來執(zhí)行一下Demo5,你看看list當(dāng)中是不是只有一個(gè)jack
@Testpublic void fun5() {/*** 1.創(chuàng)建容器*/ApplicationContext ac = new ClassPathXmlApplicationContext("com/learn/c_injection/applicationContext.xml");CollectionBean cb = (CollectionBean)ac.getBean("cb");System.out.println(cb);}
CollectionBean [arr=[tom, jerry, User [name=tom, age=20, car=Car [name=蘭博基尼, color=黃色]]], list=[jack], map=null, prop=null]
如果list當(dāng)中你想放入多個(gè)值,那該怎么寫,把這個(gè)property復(fù)制一個(gè)新的,跟這個(gè)array是不是一樣啊,只不過你這里面的元素不使用array了,使用list了,而剩下的一樣的,把這三個(gè)復(fù)制一下,給他換個(gè)名,jack,rose,然后,比如user3,這樣的話再來執(zhí)行一下
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd "><!-- set方式注入 --><bean name="user" class="com.learn.bean.User"><!-- 為User對象中名為name的屬性注入tom作為值 --><property name="name" value="tom"></property><property name="age" value="18"></property><!-- 為car屬性注入下方配置的car對象 --><property name="car" ref="car"></property></bean><!-- 將car對象配置到容器中 --><bean name="car" class="com.learn.bean.Car"><property name="name" value="蘭博基尼"></property><property name="color" value="黃色"></property></bean><!-- ============================================================= --><!-- 構(gòu)造函數(shù)注入 --><bean name="user2" class="com.learn.bean.User"><!-- name屬性:構(gòu)造函數(shù)的參數(shù)名 --><!-- index屬性:構(gòu)造函數(shù)的參數(shù)索引 --><!-- type屬性:構(gòu)造函數(shù)的參數(shù)類型 --><constructor-arg name="name" value="999" index="0" type="java.lang.Integer"></constructor-arg><constructor-arg name="car" ref="car" index="1"></constructor-arg></bean><!-- ============================================================= --><!-- p名稱空間注入 1.導(dǎo)入p名稱空間 xmlns:p="http://www.springframework.org/schema/p"2.使用p:屬性完成注入|-值類型: p:屬性名="值"|-對象類型: p:屬性名-ref="bean名稱"--><bean name="user3" class="com.learn.bean.User" p:name="jack" p:age="20" p:car-ref="car"></bean><!-- ============================================================= --><!-- spel注入:spring Expression Language spring表達(dá)式語言 --><bean name="user4" class="com.learn.bean.User" ><property name="name" value="#{user.name}"></property><property name="age" value="#{user3.age}"></property><property name="car" ref="car"></property></bean><!-- ============================================================= --><!-- 復(fù)雜類型注入 --><bean name="cb" class="com.learn.c_injection.CollectionBean"><!-- 如果數(shù)組中只準(zhǔn)備注入一個(gè)值(對象),直接使用value|ref即可 --><!-- <property name="arr" value="tom"></property> --><property name="arr"><!-- array注入 --><array><value>tom</value><value>jerry</value><ref bean="user4"/></array></property><!-- <property name="list" value="jack"></property> --><property name="list" ><list><value>jack</value><value>rose</value><ref bean="user3"/></list></property></bean>
</beans>
list當(dāng)中是不是三個(gè)元素,這是不是list,jack,rose,這里是不是還有個(gè)對象類型的CollectionBean [arr=[tom, jerry, User [name=tom, age=20, car=Car [name=蘭博基尼, color=黃色]]],
list=[jack, rose, User [name=jack, age=20, car=Car [name=蘭博基尼, color=黃色]]], map=null, prop=null]
這是咱們的List,然后接下來再來看一下咱們的Map,Map的話復(fù)制一個(gè)Property,Map類型注入,變量名咱們改成一個(gè)map,換乘map,然后map大家知道他是鍵值對,所以這塊使用entry對象,其中entry對象這里面一共提供了兩個(gè)屬性,分別是key屬性,還有他的value屬性,其中key填寫鍵的名稱,來一個(gè)url,等于jdbc:mysql:///crm,看懂啥意思,我隨便寫的,接下來再來一個(gè)其他的,比如鍵咱們叫成driverName,這是咱們驅(qū)動名稱,咱們叫car,因?yàn)槲乙獊硪粋€(gè)對象類型,我來一個(gè)car,然后value-ref等于,你應(yīng)該知道是啥意思了,咱們好像沒有car,那咱們來一個(gè)user4,鍵是user4,這里是不是兩個(gè)鍵值對,一個(gè)鍵是url,對應(yīng)的是不是字符串,一個(gè)鍵是user,對應(yīng)的是user4對象,還有一個(gè)特殊情況,這里還有一個(gè)key-ref,比如key-ref咱們來一個(gè)什么對象啊,比如user3作為咱們的key-ref鍵,然后value就是user2,map有點(diǎn)詭異,一共三個(gè)鍵值對,咱們分別演示,鍵為字符串,值為字符串,鍵為字符串,值為對象,鍵為對象,值為對象
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd "><!-- set方式注入 --><bean name="user" class="com.learn.bean.User"><!-- 為User對象中名為name的屬性注入tom作為值 --><property name="name" value="tom"></property><property name="age" value="18"></property><!-- 為car屬性注入下方配置的car對象 --><property name="car" ref="car"></property></bean><!-- 將car對象配置到容器中 --><bean name="car" class="com.learn.bean.Car"><property name="name" value="蘭博基尼"></property><property name="color" value="黃色"></property></bean><!-- ============================================================= --><!-- 構(gòu)造函數(shù)注入 --><bean name="user2" class="com.learn.bean.User"><!-- name屬性:構(gòu)造函數(shù)的參數(shù)名 --><!-- index屬性:構(gòu)造函數(shù)的參數(shù)索引 --><!-- type屬性:構(gòu)造函數(shù)的參數(shù)類型 --><constructor-arg name="name" value="999" index="0" type="java.lang.Integer"></constructor-arg><constructor-arg name="car" ref="car" index="1"></constructor-arg></bean><!-- ============================================================= --><!-- p名稱空間注入 1.導(dǎo)入p名稱空間 xmlns:p="http://www.springframework.org/schema/p"2.使用p:屬性完成注入|-值類型: p:屬性名="值"|-對象類型: p:屬性名-ref="bean名稱"--><bean name="user3" class="com.learn.bean.User" p:name="jack" p:age="20" p:car-ref="car"></bean><!-- ============================================================= --><!-- spel注入:spring Expression Language spring表達(dá)式語言 --><bean name="user4" class="com.learn.bean.User" ><property name="name" value="#{user.name}"></property><property name="age" value="#{user3.age}"></property><property name="car" ref="car"></property></bean><!-- ============================================================= --><!-- 復(fù)雜類型注入 --><bean name="cb" class="com.learn.c_injection.CollectionBean"><!-- 如果數(shù)組中只準(zhǔn)備注入一個(gè)值(對象),直接使用value|ref即可 --><!-- <property name="arr" value="tom"></property> --><property name="arr"><!-- array注入 --><array><value>tom</value><value>jerry</value><ref bean="user4"/></array></property><!-- <property name="list" value="jack"></property> --><property name="list" ><list><value>jack</value><value>rose</value><ref bean="user3"/></list></property><!-- map類型注入 --><property name="map" ><map><entry key="url" value="jdbc:mysql:///crm"></entry><entry key="user4" value-ref="user4"></entry><entry key-ref="user3" value-ref="user2"></entry></map></property></bean></beans>
打印一下,看看這個(gè)map
CollectionBean [
arr=[tom, jerry, User [name=tom, age=20, car=Car [name=蘭博基尼, color=黃色]]],
list=[jack, rose, User [name=jack, age=20, car=Car [name=蘭博基尼, color=黃色]]],
map={url=jdbc:mysql:///crm, user4=User [name=tom, age=20, car=Car [name=蘭博基尼, color=黃色]], User [name=jack, age=20, car=Car [name=蘭博基尼, color=黃色]]=User [name=999, age=null, car=Car [name=蘭博基尼, color=黃色]]},
prop=null]
這個(gè)map你看,這是第一個(gè),是不是字符串字符串,下邊這個(gè)是字符串對象,第三個(gè),第四個(gè),是不是對象對象,等于是一個(gè)對象,最后一個(gè)兩個(gè)都是對象,那這個(gè)就是map類型的注入,之后還剩最后一個(gè),properties類型注入,properties類型注入的話,咱們還是property元素,name等于prop,然后里面的子元素不用map了,換成props,然后大家知道其實(shí)properties也是鍵值對,只不過他都是字符串,值就放到標(biāo)簽體里面去了,這個(gè)來一個(gè)drvierClass,com.jdbc.mysql.Driver,咱們的userName等于root,咱們再來一個(gè)password,然后密碼等于1234,我這不是連接數(shù)據(jù)庫,我是隨便來一個(gè)場景
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd "><!-- set方式注入 --><bean name="user" class="com.learn.bean.User"><!-- 為User對象中名為name的屬性注入tom作為值 --><property name="name" value="tom"></property><property name="age" value="18"></property><!-- 為car屬性注入下方配置的car對象 --><property name="car" ref="car"></property></bean><!-- 將car對象配置到容器中 --><bean name="car" class="com.learn.bean.Car"><property name="name" value="蘭博基尼"></property><property name="color" value="黃色"></property></bean><!-- ============================================================= --><!-- 構(gòu)造函數(shù)注入 --><bean name="user2" class="com.learn.bean.User"><!-- name屬性:構(gòu)造函數(shù)的參數(shù)名 --><!-- index屬性:構(gòu)造函數(shù)的參數(shù)索引 --><!-- type屬性:構(gòu)造函數(shù)的參數(shù)類型 --><constructor-arg name="name" value="999" index="0" type="java.lang.Integer"></constructor-arg><constructor-arg name="car" ref="car" index="1"></constructor-arg></bean><!-- ============================================================= --><!-- p名稱空間注入 1.導(dǎo)入p名稱空間 xmlns:p="http://www.springframework.org/schema/p"2.使用p:屬性完成注入|-值類型: p:屬性名="值"|-對象類型: p:屬性名-ref="bean名稱"--><bean name="user3" class="com.learn.bean.User" p:name="jack" p:age="20" p:car-ref="car"></bean><!-- ============================================================= --><!-- spel注入:spring Expression Language spring表達(dá)式語言 --><bean name="user4" class="com.learn.bean.User" ><property name="name" value="#{user.name}"></property><property name="age" value="#{user3.age}"></property><property name="car" ref="car"></property></bean><!-- ============================================================= --><!-- 復(fù)雜類型注入 --><bean name="cb" class="com.learn.c_injection.CollectionBean"><!-- 如果數(shù)組中只準(zhǔn)備注入一個(gè)值(對象),直接使用value|ref即可 --><!-- <property name="arr" value="tom"></property> --><property name="arr"><!-- array注入 --><array><value>tom</value><value>jerry</value><ref bean="user4"/></array></property><!-- <property name="list" value="jack"></property> --><property name="list" ><list><value>jack</value><value>rose</value><ref bean="user3"/></list></property><!-- map類型注入 --><property name="map" ><map><entry key="url" value="jdbc:mysql:///crm"></entry><entry key="user4" value-ref="user4"></entry><entry key-ref="user3" value-ref="user2"></entry></map></property><!-- properties類型注入 --><property name="prop" ><props><prop key="driverClass">com.jdbc.mysql.Driver</prop><prop key="userName">root</prop><prop key="password">1234</prop></props></property></bean>
</beans>
然后接下來最后打印一下
CollectionBean [
arr=[tom, jerry, User [name=tom, age=20, car=Car [name=蘭博基尼, color=黃色]]],
list=[jack, rose, User [name=jack, age=20, car=Car [name=蘭博基尼, color=黃色]]],
map={url=jdbc:mysql:///crm, user4=User [name=tom, age=20, car=Car [name=蘭博基尼, color=黃色]], User [name=jack, age=20, car=Car [name=蘭博基尼, color=黃色]]=User [name=999, age=null, car=Car [name=蘭博基尼, color=黃色]]},
prop={driverClass=com.jdbc.mysql.Driver, password=1234, userName=root}]
你們看看prop屬性,用戶名密碼,這樣復(fù)雜性注入就演示完了,數(shù)組,List,Map,Properties,數(shù)組的話分兩種情況,一種是只有一個(gè)值,還有一種是多個(gè)值,然后List也是分為這兩種情況,List只有一個(gè)值,如果List只有一個(gè)值,這么寫,然后有多個(gè)值,這么寫,然后Map沒有一個(gè)值多個(gè)值的情況,一個(gè)多個(gè)都得這么寫,然后Properties也是,也不分一個(gè)值多個(gè)值,復(fù)雜類型注入這個(gè)知識點(diǎn),今天的內(nèi)容差不多就完事了
?
總結(jié)
以上是生活随笔為你收集整理的spring配置详解-复杂类型注入的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring配置详解-属性注入(p名称空
- 下一篇: spring中使用注解代替xml配置