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

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

//people.java
public 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.java
public 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.java
import 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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值