Spring - constructor-arg和property

时间:2023-12-15 22:59:44

1、说明

constructor-arg:通过构造函数注入。 
   property:通过setter对应的方法注入。

2、constructor-arg的使用示例

(1)、Model代码:

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
public class Student {
    private Integer id;
    private String name;
    private List<String> dream;
    private Map<String, Integer> score;
    private boolean graduation;
                                                                                                                                                                           
    public Student() {
                                                                                                                                                                           
    }
                                                                                                                                                                           
    public Student(Integer id, String name, List<String> dream,
            Map<String, Integer> score, boolean graduation) {
        this.id = id;
        this.name = name;
        this.dream = dream;
        this.score = score;
        this.graduation = graduation;
    }
                                                                                                                                                                           
    @Override
    public String toString() {
        return "Student [id=" + id + ", name=" + name + ", dream=" + dream
                ", score=" + score + ", graduation=" + graduation + "]";
    }
                                                                                                                                                                           
}

(2)、xml配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<bean id="student" class="com.rc.sp.Student">
    <constructor-arg name="id" value="1"/>
    <constructor-arg name="name" value="student"/>
    <constructor-arg name="dream">
        <list>
            <value>soldier</value>
            <value>scientist</value>
            <value>pilot</value>
        </list>
    </constructor-arg>
    <constructor-arg name="score">
        <map>
            <entry key="math" value="90"/>
            <entry key="english" value="85"/>
        </map>
    </constructor-arg>
    <constructor-arg name="graduation" value="false"/>
</bean>

说明:<constructor-arg name="id" value="1"/>也可以改成<constructor-arg index="0" value="1"/>方式;boolean的值既可以用0/1填充,也可以用true/false填充。

3、property的使用示例

(1)、Model代码:

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
public class Teacher {
    private Integer id;
    private String name;
                                                         
    public Integer getId() {
        return id;
    }
                                                         
    public void setId(Integer id) {
        this.id = id;
    }
                                                         
    public String getName() {
        return name;
    }
                                                         
    public void setName(String name) {
        this.name = name;
    }
                                                         
    @Override
    public String toString() {
        return "Teacher [id=" + id + ", name=" + name + "]";
    }
                                                         
}

(2)、xml配置:

1
2
3
4
<bean id="teacher" class="com.rc.sp.Teacher">
    <property name="id" value="1"></property>
    <property name="name" value="teacher"></property>
</bean>

4、Test

(1)、测试代码:

1
2
3
4
5
6
7
8
9
10
11
12
public class Run {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext(
                "applicationContext.xml");
                                  
        Student student = (Student) context.getBean("student");
        System.out.println(student);
                                  
        Teacher teacher = (Teacher) context.getBean("teacher");
        System.out.println(teacher);
    }
}

(2)、输出结果:

Student [id=1, name=student, dream=[soldier, scientist, pilot],

score={math=90, english=85}, graduation=false]

Teacher [id=1, name=teacher]