Spring4学习笔记(四):集合属性

来源:互联网 发布:angularjs2 定义数组 编辑:程序博客网 时间:2024/06/07 02:17

list<.class> : 使用list配合ref

//people.javapublic class People {    private String name;    private int age;    private List<Car> cars;    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public List<Car> getCars() {        return cars;    }    public void setCars(List<Car> cars) {        this.cars = cars;    }    public String getName() {        return name;    }    public void setName(String name)    {        this.name = name;    }    @Override    public String toString() {        return "People [name=" + name + ", age=" + age + ", cars=" + cars + "]";    }    public void say()    {        System.out.println("I am " + name);    }}
<!--.xml--><bean id="people1" class="com.whiteblack.spring.listdemo.People">        <property name="name" value="listdemo"></property>        <property name="age" value="21"></property>        <property name="cars" >            <list>                <ref bean="car1"/>                <ref bean="car2"/>            </list>        </property>    </bean>

list<String或其它类型>: 使用list配合value

//Peopletwo.javapublic class Peopletwo {    private String name;    private List<String> habits;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public List<String> getHabits() {        return habits;    }    public void setHabits(List<String> habits) {        this.habits = habits;    }    @Override    public String toString() {        return "Peopletwo [name=" + name + ", habits=" + habits + "]";    }}
<!--.xml--><bean id="people2" class="com.whiteblack.spring.listdemo.Peopletwo">        <property name="name" value="listString"></property>            <property name="habits">            <list>                <value>唱歌</value>                <value>跳舞</value>                <value>画画</value>            </list>        </property>     </bean>

map<String,Car> :使用map节点及map的entry字节点配置成员

public class PeopleThree {    private String name;    private Map<String,Car> cars;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Map<String, Car> getCars() {        return cars;    }    public void setCars(Map<String, Car> cars) {        this.cars = cars;    }    @Override    public String toString() {        return "PeopleThree [name=" + name + ", cars=" + cars + "]";    }}
<!-- 配置map属性值 -->    <bean id="people5" class="com.whiteblack.spring.listdemo.PeopleThree">        <property name="name" value="peoplemap"></property>        <property name="cars">        <!-- 使用map节点及map的entry字节点配置成员 -->            <map>                <entry key="AA" value-ref="car1"></entry>                <entry key="BB" value-ref="car2"></entry>            </map>        </property>    </bean>

使用 <props> 定义 java.util.Properties, 该标签使用多个 <props> 作为子标签. 每个 <props>标签必须定义 key 属性.

//DataSource.javaimport java.util.Properties;public class DataSource {    private Properties property;    public Properties getProperty() {        return property;    }    public void setProperty(Properties property) {        this.property = property;    }    @Override    public String toString() {        return "DataSourse [property=" + property + "]";    }}
//使用props 和 prop子节点配置Properties属性<bean id="prop" class="com.whiteblack.spring.listdemo.DataSource">        <property name="property">            <props>            <prop key="user">root</prop>            <prop key="password">123456</prop>            <prop key="jdbcUrl">jdbc:mysql:///test</prop>            <prop key="driverClass">com.mysql.jdbc.Driver</prop>            </props>        </property>    </bean>

使用 utility scheme 定义集合
使用基本的集合标签定义集合时, 不能将集合作为独立的 Bean 定义, 导致其他 Bean 无法引用该集合, 所以无法在不同 Bean 之间共享集合.
可以使用 util schema 里的集合标签定义独立的集合 Bean. 需要注意的是, 必须在 <beans>根元素里添加 util schema 定义

<!-- 配置单例的集合bean 以供多个bean进行引用 -->    <util:list id="cars">        <ref bean="car1"></ref>        <ref bean="car2"></ref>    </util:list>

使用p命名空间为bean属性赋值

<bean id="people6" class="com.whiteblack.spring.listdemo.People" p:name="p:name" p:age="21" p:cars-ref="cars"></bean>
原创粉丝点击