spring DI-setter注入

spring DI-setter注入

1、对象定义

Student类和Person类:

1
2
3
4
5
6
7
8
9
10
11
12
public class Student{

}
public class Person{
private Long pid;
private String name;
private Student student;
private List list;
private Set set;
private Map map;
private Properties properties;
}

2、装置属性配置

装载属性配置如下:

  • 基本属性
  • list
  • set
  • map
  • object
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    <bean id="student" class="..." scope="prototype"></bean>
    <bean id="person" class="...">
    <!--
    是用来描述Person的属性
    name为属性的名称
    value就给name的属性赋值
    基本属性可以这样赋值:
    String类型和基本类型(数据类型)
    ref是给引用类型赋值的
    <property name="student" ref="student"/>
    <property name="student">
    <ref bean="student"/>
    </property>
    -->
    <property name="pid" value="1"></property>
    <property name="name" value="王二麻子"></property>
    <property name="student">
    <ref bean="student"/>
    </property>
    <property name="list">
    <list>
    <value>list1</value>
    <value>list2</value>
    <ref bean="student"/>
    </list>
    </property>
    <property name="set">
    <set>
    <value>set1</value>
    <value>set2</value>
    <ref bean="student"/>
    </set>
    </property>
    <property name="map">
    <map>
    <entry key="map1">
    <value>map1</value>
    </entry>
    <entry key="map2">
    <ref bean="student"/>
    </entry>
    </map>
    </property>
    <property name="properties">
    <props>
    <prop key="p1">afd</prop>
    <prop key="p2">p2</prop>
    </props>
    </property>
    </bean>

注意:
如果在student对象scope对象配置为prototype,在student类的构造方法中写入输出student语句,将会打印出4个student。
第一个因为有ref引用,spring将对象创建提前了,创建了一个student对象;
后面三个是一个ref创建一个student对象;