2.spring:集合属性

1.list 

配置java.util.List类型的属性,需要指定<list>标签,在标签里面包含有一些元素,这些标签
可以通过<value>指定简单的常量值,通过<ref>指定对Bean的引用,通过<bean>指定内置的Bean定义,
通过<null />指定空元素,是指可以嵌套在其他的集合

 Person.java

public class Person {
    private String name;
    private int age;
    private List<car> cars;
  //setter...
}

 applicationContext.xml

<!-- list -->
<bean id="person3" class="com.MrChengs2.Collection.Person">
    <property name="name" value="Mike"></property>
    <property name="age" value="24"></property>
    <property name="cars">
        <list>
       <!-- 1中的Person类 --> <bean class="com.MrChengs1.HelloSpring.car" p:brand="XinXin" p:corp="AnHui"
           p:maxSpeech="100" p:price="12345"></bean> <ref bean="car"/> <ref bean="car1"/> </list> </property> </bean>

 测试:

           Person p = (Person) ctx.getBean("person3");
           System.out.println(p);
Person [name=Mike, age=24, cars=[car [brand=XinXin, corp=AnHui, price=12345.0,
maxSpeech=100],
car [brand=LeiNuo, corp=shanghai, price=0.0, maxSpeech=120],
car [brand=AoDI, corp=<shanghai>, price=0.0, maxSpeech=245]]]

 

2.Map

<Map>:标签里面嵌套<entry>,在<entry>中进行设置

通过<map>标签定义,<map>标签里面可以使用多个<entry>作为子标签,每个条目包含一个键和一个值
必须在<key>标签里面定义
因为键和值的类型没有限制,所以可以自由的为他们指定<value> <ref> <bean> <null>元素
可以将Map的键和值作为<entry>的属性定义,简单的常量可以使用key和value来定义,Bean引用通过key-ref和value-ref属性来定义
使用<props>定义的java.util.Properties,该标签使用多个<prop>作为子标签,每个子标签必须定义key属性

PersonMap.java

public class PersonMap {
    private String name;
    private int age;
    private Map<String,car> cars;
  //setter...
}

applicationContext.xml

<bean id="Person4" class="com.MrChengs2.Collection.PersonMap">
    <property name="name" value="Rose"></property>
    <property name="age" value="77"></property>
    <property name="cars">
        <map >
            <entry key="AA" value-ref="car"></entry>
            <entry key="BB" value-ref="car1"></entry>
        </map>
    </property>
</bean>

测试:

          PersonMap p1 = (PersonMap) ctx.getBean("Person4");
          System.out.println(p1);
PersonMap [name=Rose, age=77, cars={AA=car [brand=LeiNuo, corp=shanghai, price=0.0, maxSpeech=120], 
BB=car [brand=AoDI, corp=<shanghai>, price=0.0, maxSpeech=245]}]

 

3.Properties

DatasourceProperties.java

public class DatasourceProperties {
    private Properties properties;
  //setter...
}

applicationContext.xml

<bean id="properties" class="com.MrChengs2.Collection.DatasourceProperties">
    <property name="properties">
        <props>
            <prop key="user">root</prop>
            <prop key="password">1234</prop>
            <prop key="jdbcUrl">jdbc:mysql://</prop>
            <prop key="driverClass">com.mysql.jdbc.Driver</prop>
        </props>
    </property>
</bean>

测试:

          DataSource dataSource = (DataSource) ctx.getBean("properties");
          System.out.println(dataSource);

 

4.配置独立集合的Bean

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

appliactionContext.xml

<!-- 配置独立的集合Bean
    此时需要在NameSpace导入util命名空间
    此时引用cars就等于直接引用在这里面的整体内容
 -->
<util:list id="cars">
    <ref bean="car"/>
    <ref bean="car1" />
</util:list>

<bean id="Persons" class="com.MrChengs2.Collection.Person">
  <property name="name" value="zhangshan"></property>
  <property name="age" value="25"></property>
  <property name="cars" ref="cars"></property>
</bean>

测试:

          Person p2 = (Person) ctx.getBean("Persons");
           System.out.println(p2);
Person [name=zhangshan, age=25, cars=[car [brand=LeiNuo, corp=shanghai, price=0.0, maxSpeech=120],
car [brand=AoDI, corp=<shanghai>, price=0.0, maxSpeech=245]]]

 

posted @ 2018-12-07 22:10  MrChengs  阅读(247)  评论(0编辑  收藏  举报