Recap
之前讨论了setter方法注入,要求在pojo类中要有对应属性的set方法,然后在xml文件中通过
例如:
User.java:1
2
3
4
5
6
7
8
9
10
11public class User {
private String name;
public void setName(String name) {
this.name = name;
}
public void show() {
System.out.println("name="+name);
}
}
beans.xml:1
<property name="name" value="xliu"/>
构造器注入
除了setter方法注入之外,还有构造器注入,这种方法要求pojo类中有构造函数,不要求set方法。xml文件中使用标签<constructor-arg>
。
例如:
User.java:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15public class User {
private String name;
public User(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void show() {
System.out.println("name="+name);
}
}
beans.xml:1
<constructor-arg name="name" value="xliu"/>
其他数据类型
除了基本的数据类型,int,String之类的,还有Map和List类型,其在xml中对应的配置标签如下。
User.java:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20public class User {
private String name;
private List<String> dream;
private Map<String,String> score;
public User(String name, List<String> dream, Map<String, String> score) {
this.name = name;
this.dream = dream;
this.score = score;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", dream=" + dream +
", score=" + score +
'}';
}
}
beans.xml:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15<bean id="user" class="com.xliu.pojo.User">
<constructor-arg name="name" value="xliu"/>
<constructor-arg name="dream">
<list>
<value>programmer</value>
<value>travel</value>
</list>
</constructor-arg>
<constructor-arg name="score">
<map>
<entry key="math" value="90"/>
<entry key="science" value="80"/>
</map>
</constructor-arg>
</bean>
输出:1
User{name='xliu', dream=[programmer, travel], score={math=90, science=80}}
同理,数组对应的标签为<array>
,set对应的标签为<set>