spring學習4-bean配置文件

上篇簡單介紹了一下bean配置文件注入簡單的屬性和複雜一點的類注入,今天說一下其餘類型的注入。html

spring中提供配置Bean有三種實例化的方式java

  1. 類構造器實例化
  2. 靜態工廠方法實例化
  3. 實例工廠方法實例化

類構造器實例化就是昨天說的那種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 + " ] " ; } }

以上執行的結果

image

因爲原有的方式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文件

http://docs.spring.io/spring/docs/3.2.8.RELEASE/spring-framework-reference/htmlsingle/#xsd-config-body-schemas-util-map

相關文章
相關標籤/搜索