Spring依赖注入

一、什么是依赖注入

当我们创建POJO类时,这些类都会有各自的属性,属性的类型可能时java自带的基本类型或引用类型,或者是我们自己定义的对象。对于使用spring来配置bean时,如果要给bean提供初始化参数,就要用到依赖注入的方式,所谓的依赖注入就是通过spring的配置文件,将参数传递到bean实例对象的过程。

二、通过属性注入实现依赖注入

1、原理

属性注入是在Bean实例被创建后,通过反射的方式调用Setter放来注入属性值的。

2、步骤

1、定义POJO类

创建两个POJO类,User类Pet类User类中有一个属性类型为Pet型
User类

public class User {
private int id;
private String username;
private String password;
private Pet pet;

public User() {
super();
System.out.println("User类的构造器被调用了");
}

public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}

public Pet getPet() {
return pet;
}

public void setPet(Pet pet) {
this.pet = pet;
}

@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", password=" + password + ", pet=" + pet + "]";
}
}
Pet类

public class Pet {

private int id;
//宠物类型
private String type;

public Pet() {
super();
System.out.println("Pet类的构造器被调用");
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getType() {
return type;
}

public void setType(String type) {
this.type = type;
}

@Override
public String toString() {
return "Pet [id=" + id + ", type=" + type + "]";
}

}

2、配置spring配置文件
















3、测试

  • 测试的时候自己在Setter方法中加入输出来做一些判断

测试类

public void testUserServiceImpl() {
//获取IOC容器
ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
//通过ApplicationContext对象的getBean方法来获取对象实例
User user = (User) context.getBean("user");
System.out.println(user);
}

1、给User类所有参数都初始化

2、给User类除pet属性外所有参数都初始化

4、测试结果总结

  • spring配置文件中使用property标签做初始化,是调用类的Setter方法来实现依赖注入的
  • 容器会先调用类的无参构造器创建出对象的实例,在来实现依赖注入。由于User这个Bean的配置中有初始化参数pet,但是这个实例还没有被创建,所以容器并没有真正开始做User类的初始化,而是转头先将Pet类创建实例,做初始化。最后在来给User类初始化
posted @ 2019-04-24 21:15  hamawep  阅读(226)  评论(0)    收藏  举报