1. 程式人生 > 實用技巧 >2、Spring之核心容器

2、Spring之核心容器

核心容器提供了Spring框架的基本功能。

主要包括:spring-core,spring-beans,spring-context,spring-context-support,spring-expression五個模組

spring-corespring-beans作為框架的基礎部分,提供了IoC和依賴注入功能(DI)
spring-context建立在spring-corespring-beans的基礎上,是一個配置檔案
spring-context-support對整合的第三方庫提供支援,如:快取(EhCache...),郵件(JavaMail),排程和模板引擎(FreeMarker...)
spring-expression

表示式語言,用於在執行時查詢和操作物件

spring-core的主要元件是BeanFactory,從名字得知,它是一種工廠模式的實現;

BeanFactory通過控制反轉(IoC)模式將應用程式的配置和依賴性(類與類之間的關係)規範 與 實際的應用程式程式碼分開(尤指業務程式碼),從而降低了類與類之間的耦合度;

IoC(Inversion of Control)控制反轉可以分為“控制”和“反轉”
控制:獲取物件的方式
反轉:從主動獲取變成了被動獲取

主動式:

XxxServlet{
    //以往程式都是自己主動建立(new)物件來建立類之間的依賴關係(例如:Servlet依賴於Service)
    XxxService xs = new XxxService();
}

!!主動式:是在編譯時繫結物件(即確立類之間關係)

被動式

//資源的獲取不是我們自己建立,而是交給一個容器來建立和設定
//XxxServlet依賴於XxxkService,容器幫我建立XxxkService物件,並把XxxService物件賦值過去
XxxServlet{
    XxxService xs;
    public void test1(){
        xs.checkout();
    }
}

!!被動式:是在執行時繫結物件(在容器初始化 到 容器初始化完成之前確立類之間的關係)

DI(Dependency injection)依賴注入:
容器知道哪個元件(類)執行的時候,需要另外一個類(元件);容器通過反射的形式,將容器中準備的XxxService注入(利用反射給屬性賦值)到XxxkServlet