依赖注入setter
这是两个要实例的类,要往person中注入多种属性,并配置applicationContext.xml
public class Student {
public Student() {
System.out.println("new Student");
}
public void say() {
System.out.println("student");
}
}
public class Person {
private int id;
private String name;
private Student student;
private Map map;
private List lists;
private Object[] objects;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Student getStudent() {
return student;
}
public void setStudent(Student student) {
this.student = student;
}
public Map getMap() {
return map;
}
public void setMap(Map map) {
this.map = map;
}
public List getLists() {
return lists;
}
public void setLists(List lists) {
this.lists = lists;
}
public Object[] getObjects() {
return objects;
}
public void setObjects(Object[] objects) {
this.objects = objects;
}
@Override
public String toString() {
return "Person [id=" + id + ", lists=" + lists + ", map=" + map
+ ", name=" + name + ", objects=" + Arrays.toString(objects)
+ ", student=" + student + "]";
}
public void sys(){
this.student.say();
}
}
<?xml version="1.0" encoding="UTF-8"?>
<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-2.5.xsd">
<bean id="person" class="com.example.vic.test_spring.di_setter_constructor.Person">
<property name="id" value="123"></property>
<property name="name" value="李三"></property>
<property name="student" ref="student"></property>
<property name="map">
<map>
<entry key="m1">
<value>m1</value>
</entry>
<entry key="m2">
<ref bean="student"/>
</entry>
</map>
</property>
<property name="lists">
<!-- list里面用value标签 装配 -->
<list>
<value>list1</value>
<value>list2</value>
<!-- list中存放一个student对象 -->
<ref bean="student"/>
</list>
</property>
<property name="objects">
<list>
<value>obj1</value>
<ref bean="student"/>
</list>
</property>
</bean>
<bean id="student" class="com.example.vic.test_spring.di_setter_constructor.Student">
</bean>
</beans>
测试
public void testMothed(){
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
Person person = (Person) context.getBean("person");
System.out.println(person.toString());
person.sys();
}
第二种注入constructor
public class Person {
private int id;
private String name;
private Student student;
public Person(int id,String name) {
// TODO Auto-generated constructor stub
this.id=id;
this.name=name;
}
public Person(String name,Student student){
this.name = name;
this.student = student;
}
@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", student=" + student
+ "]";
}
public void sys(){
this.student.say();
}
}
<bean id="person" class="com.example.vic.test_spring.di_constructor.Person">
<!--
constructor-arg 代表某一个构造器的参数 会自动匹配
index 构造器参数的下标
value
ref
type 类型 可写可不写
-->
<constructor-arg index="1" ref="student"></constructor-arg>
<constructor-arg index="0" value="李三" type="java.lang.String"> </constructor-arg>
</bean>
<bean id="student" class="com.example.vic.test_spring.di_constructor.Student">
</bean>