上篇簡單介紹了一下bean配置文件注入簡單的屬性和複雜一點的類注入,今天說一下其餘類型的注入。html
spring中提供配置Bean有三種實例化的方式java
類構造器實例化就是昨天說的那種spring
< bean id ="engine" class ="com.demo.spring.car.QiyouEngine" ></ bean >
使用這個實例化QiyouEngine類,調用的是類默認的構造函數api
若是想要在構造器里加入參數就得在替換掉上篇寫在bean標籤裏的property標籤,改爲<constructor-arg></constructor-arg>數組
好比把上篇中使用set方法注入的屬性name和engine,改爲用構造器注入就的這麼寫:ide
< bean id ="car" class ="com.demo.spring.car.Car" > < constructor-arg index ="0" type ="java.lang.String" value ="寶馬" ></ constructor-arg > < constructor-arg index ="1" type ="com.demo.spring.car.IEngine" ref ="engine" ></ constructor-arg > </ bean >
<constructor-arg>標籤中index指的是該屬性在構造器中參數的順序,從0開始。而type是寫注入屬性的類型和構造器的順序是同樣的函數
public Car(String name,IEngine engine){ this .name = name; this .engine = engine; }
接下來說如何注入集合類型,如List,Set,Map等this
List的注入和數組的注入是採起相同的標籤spa
< bean id ="hobby" class ="com.demo.spring.Hobby" > < property name ="hobbys" > < list > < value > 籃球 </ value > < value > 足球 </ value > </ list > </ property > </ bean >
hobby類的結構.net
public class Hobby { private List < String > hobbys; public List < String > getHobbys() { return hobbys; } public void setHobbys(List < String > hobbys) { this .hobbys = hobbys; } @Override public String toString() { return " Hobby [hobbys= " + hobbys + " ] " ; } }
以上執行的結果
因爲原有的方式List是寫在bean標籤內,得不到複用,咱們能夠藉助spring提供的ListFactoryBean來實現
< bean id ="hobby" class ="com.demo.spring.Hobby" > < property name ="hobbys" ref ="hobbys" ></ property > </ bean > < bean id ="hobbys" class ="org.springframework.beans.factory.config.ListFactoryBean" > < property name ="sourceList" > < list > < value > 籃球 </ value > < value > 足球 </ value > </ list > </ property > </ bean >
須要說明的是雖然上面使用<list>能夠實現這樣的效果,不過這是舊的標籤了,咱們照樣能夠在spring 3.2中使用,可是官方提供了新的方式
首先須要在xml頂部添加一些信息,加粗的就是須要添加的命名空間
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
使用spring新標籤<util:list>,大大簡化了編寫的複雜度
< util:list id ="hobbys" list-class ="java.util.ArrayList" > < value > 籃球 </ value > < value > 足球 </ value > </ util:list >
其餘的Map和Set標籤能夠查看官網的api文件