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;
}
}