Spring

Posted by Bruce Tsai

什麼是 Spring

Spring 是由 Rod Johnson 撰寫,並在其著作 Expert One-on-One: J2EE Design and Development 中有提到過,它是個輕量級容器(Container)、實現 IoC(Inversion of Control)、AOP(Aspect-oriented programming)概念,是一個全方位的應用程式框架(Framework),可協助建立以往在 EJB 下才有可能建立的一些應用程式。

什麼是 IoC

控制反轉(Inversion of Control,縮寫為IoC),是物件導向中的一種設計原則,可以用來減低電腦程式碼之間的耦合度。其中最常見的方式叫做依賴注入(Dependency Injection,簡稱DI),還有一種方式叫「依賴尋找」(Dependency Lookup)。通過控制反轉,物件在被建立的時候,由一個調控系統內所有物件的外界實體,將其所依賴的物件的參考傳遞給它。也可以說,依賴被注入到物件中。

IoC 類型

  • Type 1 IoC : 以介面(interface)進行依賴注入
  • Type 2 IoC : 以 setter 進行依賴注入
  • Type 3 IoC : 以 constructor 進行依賴注入
Type 1
  • 註:因 Type 1 依賴介面進行注入,會使得系統設計上依賴於介面,造成程式間的耦合度過高。
public interface InjectMyObject {
    void createMyObject(MyObject myObject);
}

class BusinessService implements InjectMyObject {
    MyObject myObject;
    public void createMyObject(MyObject myObject) {
        // 實現依賴關係
        this.myObject = myObject;
    }
}
Type 2
class BusinessService {
    MyObject myObject;

    public void setMyObject(MyObject myObject) {
        this.myObject = myObject;
    }

    public MyObject getMyObject(MyObject myObject) {
        return myObject;
    }
}
Type 3
class BusinessService {
    MyObject myObject;

    public BusinessService(MyObject myObject) {
        this.myObject = myObject;
    }
}

results matching ""

    No results matching ""