1. 程式人生 > >如何通俗的理解java的依賴注入!

如何通俗的理解java的依賴注入!

假設你編寫了兩個類,一個是人(Person),一個是手機(Mobile)。 
人有時候需要用手機打電話,需要用到手機的callUp方法。 
傳統的寫法是這樣: 
Java code 

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

也就是說,類Person的makeCall方法對Mobile類具有依賴,必須手動生成一個新的例項new   Mobile()才可以進行之後的工作。 
依賴注入
的思想是這樣,當一個類(Person)對另一個類(Mobile)有依賴時,不再該類(Person)內部對依賴的類(Moblile)進行例項化,而是之前配置一個beans.xml,告訴容器所依賴的類(Mobile),在例項化該類(Person)時,容器自動注入一個所依賴的類(Mobile)的例項。 介面: Java code public Interface MobileInterface{ public boolean callUp(long number); } Person類: Java code public class Person{ private MobileInterface mobileInterface; public boolean makeCall(long number){ return this.mobileInterface.callUp(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類完成,並在使用時由容器自動注入,這樣大大降低了不同類間相互依賴的關係。
java依賴注入的方法:set注入,構造方法注入,介面注入。
具體的注入實現見:http://blog.csdn.net/lishuangzhe7047/article/details/20740835