Spring例子中的依赖注入

时间:2020-02-23 14:34:03  来源:igfitidea点击:

在本教程中,我们将了解Spring中的依赖注入是什么,它是如何工作的,以及如何使用它。

什么是依赖注入?

依赖注入是Spring的基础之一,我们必须知道。

当我们创建一个复杂的应用程序时,很可能会有不同的对象一起工作。理想情况下,我们希望这些对象彼此独立。这种设计原则是控制反转,它强调Java类之间保持独立,然后ocontainer将它们从对象创建和维护中解放出来。如果你不熟悉国际奥委会,我强烈建议你阅读这篇关于这个主题的文章。

考虑一下如何按照传统方法创建对象依赖关系。我们必须创建一个对象类型的实例变量,然后或者有一个构造函数和一个setter方法,或者有一个(constructor/setter方法)。像这样:

public class Employee{
	private Company company;

	public Employee() {
		company = new Company();
	}
}

然而,当我们使用DI时,它看起来是这样的:

public class Employee{
	private Company company;

	public Employee(Company company) {
		this.company= company;
	}
}

你能明白为什么第二个例子更好吗?因为现在Employee不需要担心Company的实现,所以它将独立于Employee来实现,并将通过构造函数或者在初始化Employee时提供给Employee。换言之,一个员工如果不成为的一部分,就无法生存。否则,他就不是雇员了。

依赖项()正通过构造函数注入到Employee类中。

DI有两种类型:

构造器注入

当通过类构造函数注入时

基于Setter的依赖注入

当使用setter方法注入时

让我们看看如何使用setter方法实现DI。

基于Setter的依赖注入

当使用基于setter的注入时,容器将在调用无参数构造函数或者方法实例化bean后调用类的setter方法。如果我们不熟悉Spring中的bean,可以阅读本文。

这就是基于setter的DI的实现方式:

@Bean
public void setCompany(Company company) {
 this.company = company;
}

至于使用哪种类型,通常建议对强制依赖项使用构造函数DI,对可选依赖项使用setter。

多亏了DI,Employee类现在不需要查找Company,也不知道它的位置和类。