Spring的依赖注入怎么理解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring的依赖注入怎么理解相关的知识,希望对你有一定的参考价值。

先看一段代码
假设你编写了两个类,一个是人(Person),一个是手机(Mobile)。
人有时候需要用手机打电话,需要用到手机的dialUp方法。
传统的写法是这样:

Java code

public class Person{
public boolean makeCall(long number){
Mobile mobile=new Mobile();
return mobile.dialUp(number);
}
}

也就是说,类Person的makeCall方法对Mobile类具有依赖,必须手动生成一个新的实例new Mobile()才可以进行之后的工作。
依赖注入的思想是这样,当一个类(Person)对另一个类(Mobile)有依赖时,不再该类(Person)内部对依赖的类(Moblile)进行实例化,而是之前配置一个beans.xml,告诉容器所依赖的类(Mobile),在实例化该类(Person)时,容器自动注入一个所依赖的类(Mobile)的实例。
接口:

Java code

public Interface MobileInterface{
public boolean dialUp(long number);
}

Person类:

Java code

public class Person{
private MobileInterface mobileInterface;
public boolean makeCall(long number){
return this.mobileInterface.dialUp(number);
}
public void setMobileInterface(MobileInterface mobileInterface){
this.mobileInterface=mobileInterface;
}
}
xml文件中配置依赖关系

Java code
<bean id="person" class="Person">
<property name="mobileInterface">
<ref local="mobileInterface"/>
</property>
</bean>
<bean id="mobileInterface" class="Mobile"/>
这样,Person类在实现拨打电话的时候,并不知道Mobile类的存在,它只知道调用一个接口MobileInterface,而MobileInterface的具体实现是通过Mobile类完成,并在使用时由容器自动注入,这样大大降低了不同类间相互依赖的关系。
文章摘自http://zhidao.baidu.com/link?url=xL9mnzCggWSwYEddI0s55oGxOOjr48pt4NAmpxSsFNqI935n-kp1Gjo1jIiKvoRGhBqdCjLx9QcVqaxyy54Zo_#
谢谢!

以上是关于Spring的依赖注入怎么理解的主要内容,如果未能解决你的问题,请参考以下文章

spring依赖注入,和控制反转。用自己的话说是怎么说的。最好能够用代码来解释

深层理解Spring 控制反转和依赖注入,这一篇文够了

如何通俗的理解java的依赖注入

Spring依赖注入(DI)的理解

Spring的依赖注入

Spring Bean注入/单例理解/循环依赖