06数组和集合类型注入元素

数组和集合类型注入元素

注入元素到数组array标签

注入数组中的元素是简单类型: 在array标签里使用value标签,在value标签内指定数组元素的值

public class Person {
    private String[] favariteFoods;
    public void setFavariteFoods(String[] favariteFoods) {
        this.favariteFoods = favariteFoods;
    }
    @Override
    public String toString() {
        return "Person{" +
                "favariteFoods=" + Arrays.toString(favariteFoods) +
                '}';
    }
}

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="person" class="com.powernode.spring6.beans.Person">
        <property name="favariteFoods">
           
            <array>
                <value>鸡排value>
                <value>汉堡value>
                <value>鹅肝value>
            array>
        property>
    bean>
beans>

注入数组中的元素是非简单类型: 在array标签里使用ref标签,使用ref标签的bean属性指定引用的bean的id

public class Goods {
    private String name;
    public Goods() {
    }
    public Goods(String name) {
        this.name = name;
    }
    //set和get方法以及toString方法
}
public class Order {
    // 一个订单中有多个商品
    private Goods[] goods;

    public Order() {
    }

    public Order(Goods[] goods) {
        this.goods = goods;
    }
    //set和get方法以及toString方法

}

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="goods1" class="com.powernode.spring6.beans.Goods">
        <property name="name" value="西瓜"/>
    bean>

    <bean id="goods2" class="com.powernode.spring6.beans.Goods">
        <property name="name" value="苹果"/>
    bean>

    <bean id="order" class="com.powernode.spring6.beans.Order">
        
        <property name="goods">
            <array>
                
                <ref bean="goods1"/>
                <ref bean="goods2"/>
            array>
        property>
    bean>

beans>

注入元素到List集合list标签

注入List集合中的元素是简单类型: 在list标签内使用value标签,在value标签内指定集合中元素的值

注入List集合中元素是非简单类型: 在list标签内使用ref标签的bean属性指定引用外部bean的id,也可以利用bean标签自己创建一个内部bean

public class People {
    // 一个人有多个名字
    private List<String> names;

    public void setNames(List<String> names) {
        this.names = names;
    }
    @Override
    public String toString() {
        return "People{" +
            "names=" + names +
            '}';
    }
}

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="peopleBean" class="com.powernode.spring6.beans.People">
        <property name="names">
            
            <list>
                <value>铁锤value>
                <value>张三value>
                <value>张三value>
                <value>张三value>
                <value>value>
                
            	<bean class="">bean>
            	
            	<ref bean="" />
            list>
        property>
    bean>
beans>

测试程序

@Test
public void testCollection(){
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-collection.xml");
    People peopleBean = applicationContext.getBean("peopleBean", People.class);
    // List集合中的元素有序可重复,People{names=[铁锤,张三,张三,张三,狼]}
    System.out.println(peopleBean);
}

注入元素到Set集合set标签

注入Set集合中的元素是简单类型: 在set标签内使用value标签,在value标签内指定集合元素的值

注入Set集合元素是非简单类型: 在set标签内使用ref标签的bean属性指定引用外部bean的id ,也可以利用bean标签自己创建一个内部bean

public class People {
    // 一个人有多个电话
    private Set<String> phones;

    public void setPhones(Set<String> phones) {
        this.phones = phones;
    }
    //......
    @Override
    public String toString() {
        return "People{" +
            "phones=" + phones +
            ", names=" + names +
            '}';
    }
}


<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="peopleBean" class="com.powernode.spring6.beans.People">
        <property name="phones">
            <set>
                
                <value>110value>
                <value>110value>
                <value>120value>
                <value>120value>
                <value>119value>
                <value>119value>
                 
            	<bean class="">bean>
            	
            	<ref bean="" />
            set>
        property>
    bean>
beans>

测试程序

@Test
public void testCollection(){
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-collection.xml");
    People peopleBean = applicationContext.getBean("peopleBean", People.class);
    // Set集合中的元素无序不可重复,People{phones=[110,120,119]}
    System.out.println(peopleBean);
}

注入元素到Map集合map标签

注入元素到Map集合时使用map标签,在map标签内使用entry标签的key,key-ref和value,value-ref属性指定注入元素key和value的值

  • 注入Map集合中元素的key是简单类型: 使用entry标签的key属性指定元素的key的值
  • 注入Map集合中元素的key是非简单类型: 使用entry标签的key-ref属性引用外部的bean或者自己在内部创建bean
  • 注入Map集合中元素的value是简单类型: 使用entry标签的value属性指定元素的value的值
  • 注入Map集合中元素的value是非简单类型: 使用entry标签的value-ref属性或者自己在内部创建bean
public class People {
    // 一个人有多个住址
    private Map<Integer, String> addrs;
    public void setAddrs(Map<Integer, String> addrs) {
        this.addrs = addrs;
    }
    @Override
    public String toString() {
        return "People{" +
            "addrs=" + addrs +
            ", phones=" + phones +
            ", names=" + names +
            '}';
    }
}


<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="peopleBean" class="com.powernode.spring6.beans.People">
        <property name="addrs">
            <map>
                
                <entry key="1" value="北京大兴区"/>
                <entry key="2" value="上海浦东区"/>
                <entry key="3" value="深圳宝安区"/>
                
            	<entry key="" value-ref="">entry>
            	
            	<entry key="key04">
                	<bean class="">
                    	<property name="" value="">property>
                	bean>
            	entry>
            map>
        property>
    bean>
beans>

测试程序

@Test
public void testCollection(){
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-collection.xml");
    People peopleBean = applicationContext.getBean("peopleBean", People.class);
    //People{addrs=[1=北京大兴区,2=上海浦东区,3=深圳宝安区]}
    System.out.println(peopleBean);
}

注入元素到Properties集合props标签

java.util.Properties继承java.util.Hashtable也是一个Map集合,Properties集合中存储元素的类型的key和value的类型都是String类型(简单类型)

注入元素到Properties集合使用props标签,在props标签内部使用prop标签的key属性指定元素的key的值,在prop标签内部指定元素的value的值

public class People {
  private Properties properties;
  public void setProperties(Properties properties) {
      this.properties = properties;
  }
  @Override
  public String toString() {
      return "People{" +
              "properties=" + properties +
              ", addrs=" + addrs +
              ", phones=" + phones +
              ", names=" + names +
              '}';
  }
}


<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="peopleBean" class="com.powernode.spring6.beans.People">
        <property name="properties">
            <props>
                <prop key="driver">com.mysql.cj.jdbc.Driverprop>
                <prop key="url">jdbc:mysql://localhost:3306/springprop>
                <prop key="username">rootprop>
                <prop key="password">123456prop>
            props>
        property>
    bean>
beans>

测试程序

@Test
public void testCollection(){
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-collection.xml");
    People peopleBean = applicationContext.getBean("peopleBean", People.class);
    //People{password=123456,driver=com.mysql.cj.jdbc.Driver,url=jdbc:mysql://localhost:3306/spring,username=root}
    System.out.println(peopleBean);
}

你可能感兴趣的:(Spring,spring,java)