zoukankan      html  css  js  c++  java
  • Spring基础07——配置集合属性

    1.集合属性

           在Spring中可以通过一组内置的xml标签(例如<list>,<set>或<map>)来配置集合属性。

    2.配置List集合

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

          

     1 <bean id="car3" class="com.wzy.collection.Car">
     2         <constructor-arg value="Audi" index="0" type="java.lang.String"/>
     3         <constructor-arg value="ShangHai" index="1" type="java.lang.String"/>
     4         <constructor-arg value="400000" index="2" type="double"/>
     5     </bean>
     6 
     7     <bean id="car4" class="com.wzy.collection.Car">
     8         <constructor-arg value="baoma" index="0" type="java.lang.String"/>
     9         <constructor-arg value="Guangzhou" index="1" type="java.lang.String"/>
    10         <constructor-arg value="30000000" index="2" type="double"/>
    11     </bean>
    12 
    13     <bean id="car5" class="com.wzy.collection.Car">
    14         <constructor-arg value="benchi" index="0" type="java.lang.String"/>
    15         <constructor-arg value="ShenZhen" index="1" type="java.lang.String"/>
    16         <constructor-arg value="2000000" index="2" type="double"/>
    17     </bean>
    18 
    19     <!--测试如何配置集合属性-->
    20     <bean class="com.wzy.collection.Person" id="person3">
    21         <property name="name" value="mike"/>
    22         <property name="age" value="20"/>
    23         <property name="cars">
    24             <list>
    25                 <ref bean="car3"/>
    26                 <ref bean="car4"/>
    27                 <ref bean="car5"/>
    28             </list>
    29         </property>
    30     </bean>

    Java代码:

    1 private static void testCollection1() {
    2         //测试集合注入
    3         //1.获取IOC容器ApplicationContext
    4         ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml");
    5         //2.通过容器获取对象
    6         Person person = (Person) ctx.getBean("person3");
    7         //3.输出person
    8         System.out.println(person);
    9     }

     输出结果:

    3.数组

    数组的定义和List一样,都使用<list>。

    4.Set集合

    配置java.util.Set需要使用<set>标签,定义元素的方法与List一样。

    5.Map集合

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

     1 <bean id="newPerson" class="com.wzy.collection.NewPerson">
     2         <property name="name" value="wzy"/>
     3         <property name="age" value="24"/>
     4         <property name="cars">
     5             <!--使用map节点及map的entry子节点配置Map类型的成员变量-->
     6             <map>
     7                 <entry key="1" value-ref="car3"/>
     8                 <entry key="2" value-ref="car4"/>
     9                 <entry key="3" value-ref="car5"/>
    10             </map>
    11         </property>
    12     </bean>

    Java代码:

    1 private static void testCollection2() {
    2         //1.获取IOC容器ApplicationContext
    3         ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml");
    4         //2.通过容器获取对象
    5         NewPerson newPerson = (NewPerson) ctx.getBean("newPerson");
    6         //3.输出newPerson
    7         System.out.println(newPerson);
    8 }

    输出结果:

    6.properties

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

     spring.xml

     1 <bean id="dataSource" class="com.wzy.collection.DataSource">
     2         <property name="properties">
     3             <props>
     4                 <prop key="url">jdbc:mysql://localhost:3306/db</prop>
     5                 <prop key="username">root</prop>
     6                 <prop key="password">123456</prop>
     7                 <prop key="driver">Driver</prop>
     8             </props>
     9         </property>
    10     </bean>

    Java Code:

    1 private static void testCollection3() {
    2         //1.获取IOC容器ApplicationContext
    3         ApplicationContext ctx = new ClassPathXmlApplicationContext("spring.xml");
    4         //2.通过容器获取对象
    5         DataSource dataSource = (DataSource) ctx.getBean("dataSource");
    6         //3.输出dataSource
    7         System.out.println(dataSource);
    8     }

    输出结果:

    7.使用utility scheme定义集合

    在某些情况下,我们需要多个bean同时引用同一个集合元素,那么我们就需要将这些集合元素抽取出来,这样集合元素就可以在不同Bean之间共享集合。将集合元素抽取出来,可以使用util schema里的集合标签定义独立的集合Bean,需要注意的是必须在<beans>根元素里添加util schema定义。

    这里首先需要引入util的命名空间

    1 <?xml version="1.0" encoding="UTF-8"?>
    2 <beans xmlns="http://www.springframework.org/schema/beans"
    3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4        xmlns:util="http://www.springframework.org/schema/util"
    5        xmlns:p="http://www.springframework.org/schema/p"
    6        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    7         http://www.springframework.org/schema/util
    8         http://www.springframework.org/schema/util/spring-util.xsd">

    通过util标签定义公共的集合,通过属性注入中的ref属性可以直接进行引用

     1 <!--配置独立的集合bean以供多个bean进行引用-->
     2     <util:list id="cars">
     3         <ref bean="car3"/>
     4         <ref bean="car4"/>
     5         <ref bean="car5"/>
     6     </util:list>
     7 
     8     <bean id="person4" class="com.wzy.collection.Person">
     9         <property name="name" value="wzy"/>
    10         <property name="age" value="24"/>
    11         <property name="cars" ref="cars"/>
    12     </bean>
  • 相关阅读:
    Sigmoid函数
    Softmax分类器
    正则化惩罚项
    损失函数
    交叉验证
    超参数
    IMAGENET
    hdu 2767 Proving Equivalences 强连通
    hdu 4587 TWO NODES 关节点
    hdu 3635 Dragon Balls 并查集
  • 原文地址:https://www.cnblogs.com/fengyun2019/p/10826791.html
Copyright © 2011-2022 走看看