Spring依赖注入
依赖注入的概念
它是Spring框架核心IOC的具体实现方式。简单的说,就是坐等框架把对象传入,而不用我们自己去获取。
1)构造函数注入(constructor-arg标签)通过配置的方式,给构造函数的成员变量赋值。
代码:
public class CustomerServiceImpl implements ICustomerService{
private String name;
private Integer age;
private Date birthday;
public CustomerServiceImpl(String name, Integer age, Date birthday) {
this.name = name;
this.age = age;
this.birthday = birthday;
}
@Override
public void saveCustomer() {
}
}
配置如下:
配置解析: index:指定参数在构造函数参数列表的索引位置 type: 指定参数在构造函数中的数据类型 name: 指定参数在构造函数的名称 value:它能赋的值是其它的bean类型,也就是说,必须得是在配置文件中配置过的bean
2)set方法注入(property标签)代码:
public class CustomerServiceImpl implements ICustomerService{
private String name;
private Integer age;
private Date birthday;
public void setName(String name) {
this.name = name;
}
public void setAge(Integer age) {
this.age = age;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
@Override
public void saveCustomer() {
}
}
配置如下:
配置解析: name: 找的是类中set方法后面的部分 value:给属性赋值是基本数据类型和String类型的 ref:给属性复制是其它的bean类型
3)使用p名称空间注入数据(p标签)这种方式是通过在xml中导入p空间名称,使用p:propertyName 来注入数据,它的本质仍然是调用类中的set方法实现注入功能。
代码:
public class CustomerServiceImpl implements ICustomerService{
private String name;
private Integer age;
private Date birthday;
public void setName(String name) {
this.name = name;
}
public void setAge(Integer age) {
this.age = age;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
@Override
public void saveCustomer() {
}
}
配置如下:
代码:
package cn.itcast.domain;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Properties;
public class CollBean
{
public CollBean()
{
System.out.println(11111);
}
private String[] ss;
private List ll;
private Map mm;
private Properties properties; //键值对
public void setSs(String[] ss) {
this.ss = ss;
}
public void setLl(List ll) {
this.ll = ll;
}
public void setMm(Map mm) {
this.mm = mm;
}
public void setProperties(Properties properties) {
this.properties = properties;
}
@Override
public String toString() {
return "CollBean [ss=" + Arrays.toString(ss) + ", ll=" + ll + ", mm=" + mm + ", properties=" + properties + "]";
}
}
配置文件:
aaa
bbb
ccc
111
222
root
1234