Spring DI(依赖注入)

65 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

实体类Computer、MobilePhone、Student

public class Computer implements Serializable{
	private String mainboard;//主板
	private String hdd;//硬盘
	private String ram;//内存
	public String getMainboard() {
		return mainboard;
	}
	public void setMainboard(String mainboard) {
		this.mainboard = mainboard;
	}
	public String getHdd() {
		return hdd;
	}
	public void setHdd(String hdd) {
		this.hdd = hdd;
	}
	public String getRam() {
		return ram;
	}
	public void setRam(String ram) {
		this.ram = ram;
	}
}

public class MobilePhone implements Serializable{
	private String cpu;
	private String ram;
	public MobilePhone() {
		
	}
	public MobilePhone(String cpu, String ram) {
		this.cpu = cpu;
		this.ram = ram;
	}
	public String getCpu() {
		return cpu;
	}
	public void setCpu(String cpu) {
		this.cpu = cpu;
	}
	public String getRam() {
		return ram;
	}
	public void setRam(String ram) {
		this.ram = ram;
	}
}

/*
 * 自动装配:通过Spring自动装配机制,自动为一个
 * bean装配其关联的bean
 * 采用autowire="byType",即按照bean的类型进行自动装配
 */
public class Student implements Serializable{
	private Computer computer;
	private MobliePhone mobliePhone;
	public Computer getComputer() {
		return computer;
	}
	public void setComputer(Computer computer) {
		this.computer = computer;
	}
	public MobliePhone getMobliePhone() {
		return mobliePhone;
	}
	public void setMobliePhone(MobliePhone mobliePhone) {
		this.mobliePhone = mobliePhone;
	}
}

setter注入:
通过调用无参构造器或无参static工厂方法实例化bean后,调用该bean的setter方法,为其注入参数 在这里插入图片描述
在这里插入图片描述
构造器注入:
通过调用带参数的构造器来实现的,容器在bean被实例化的时候,根据参数类型执行相应的构造器,构造器注入可以强制给bean注入某些参数,比setter注入更严格. 在这里插入图片描述
在这里插入图片描述

自动装配:
Spring容器可以自动装配(autowire)相互协作bean之间的关联关系,autowire可以针对单个bean进行配置,autowire的方便在于减少xml的注入配置;自动装配虽然让开发变得更快速,但是要花更多时间进行维护,有事甚至不知道哪一个bean会被自动注入到另一个bean中.
在这里插入图片描述
在这里插入图片描述