设置注入的要求:
- 提供一个无参构造
- 为要注入的属性提供对应的setter()方法
具体例子
- 创建User类
public class User {
private String userName;
private String password;
private List<String> list;
public User(String userName, String password, List<String> list) {
this.userName = userName;
this.password = password;
this.list = list;
}
@Override
public String toString() {
return "User{" +
"userName='" + userName + '\'' +
", password='" + password + '\'' +
", list=" + list +
'}';
}
public User() {
super();
}
public void setUserName(String userName) {
this.userName = userName;
}
public void setPassword(String password) {
this.password = password;
}
public void setList(List<String> list) {
this.list = list;
}
}
- 配置XML文件
- user1是用构造注入的方式
- user2是用设置注入的方式
<bean id="user1" class="com.mason.assemble.User">
<constructor-arg index="0" value="zhangsan"/>
<constructor-arg index="1" value="111111"/>
<constructor-arg index="2">
<list>
<value>"constructorValue1"</value>
<value>"constructorValue2"</value>
</list>
</constructor-arg>
</bean>
<!-- **********************************-->
<bean id="user2" class="com.mason.assemble.User">
<property name="userName" value="lisi"></property>
<property name="password" value="222222"></property>
<property name="list">
<list>
<value>"listValue1</value>
<value>"listValue2</value>
</list>
</property>
</bean>
- 测试
public class Test {
public static void main(String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");
System.out.println(applicationContext.getBean("user1"));
System.out.println(applicationContext.getBean("user2"));
}
}
输出:
User{userName='zhangsan', password='111111', list=["constructorValue1", "constructorValue2"]}
User{userName='lisi', password='222222', list=["listValue1, "listValue2]}