依赖注入的方式
- constructor-arg:通过构造函数注入
- property:通过set方法注入
constructor-arg
Java代码:
public class Man {
private String name;
private int age;
private List<String> hobby;
private Map<String, String> friends;
private Set<String> set;
private boolean ifMarried;
public Man() {
}
public Man(String name, int age, List<String> hobby, Map<String, String> friends, Set<String> set,boolean ifMarried) {
this.name = name;
this.age = age;
this.hobby = hobby;
this.friends = friends;
this.set = set;
this.ifMarried = ifMarried;
}
public String getInfo() {
String info = "姓名:" + this.name + "\n年龄:" + this.age + "\n爱好:" + this.hobby + "\n朋友:" + this.friends + "\n婚否:" + this.ifMarried + "\n其他的:" + this.set;
return info;
}
}
xml配置:
<bean id="man" class="com.spring.test.man.Man">
<constructor-arg value="lin" index="0" >
</constructor-arg>
<constructor-arg value="10" index="1">
</constructor-arg>
<constructor-arg>
<list>
<value>movie</value>
<value>music</value>
</list>
</constructor-arg>
<constructor-arg>
<set>
<value>Lady is GaGa</value>
<value>GaGa is Lady</value>
</set>
</constructor-arg>
<constructor-arg>
<map>
<entry key="liuhua" value="man"></entry>
<entry key="xujinglei" value="female"></entry>
</map>
</constructor-arg>
<constructor-arg index="5" value="0">
</constructor-arg>
</bean>
boolean 类型的参数,在配置的时候可以是true/false或者0/1
constructor-arg 标签可以通过 type 属性区分调用哪一个构造方法
constructor-arg 标签可以通过 name 属性指定给那个参数赋值
property
Java代码:
public class Doctor {
private String name;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public void init() {
System.out.println("88888888888");
}
public void init(String name, String sex) {
this.name = name;
this.sex = sex;
}
}
xml配置:
<bean id="doctor" class="com.spring.test.man.Doctor" init-method="init">
<property name="name" value="doctor"></property>
<property name="sex" value="i don't know"></property>
</bean>
配置一个 init-method=”init” 表示在容器实例化这个doctor的时候,调用一个Doctor类的init方法
但是,这个init方法不能带参数