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,也不知道它的位置和类。