zoukankan      html  css  js  c++  java
  • 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]]]
  • 相关阅读:
    HTML 5 全局属性
    微软build 2015
    写个程序登陆58同城
    工厂方法
    简单工厂
    System.Data.SQLite兼容32位和64位问题
    利用Socket实现的两个程序的通信
    最近的工作总结
    Canvas路径、描边、填充
    HTML5阴影与渐变
  • 原文地址:https://www.cnblogs.com/Mrchengs/p/10085550.html
Copyright © 2011-2022 走看看