spring-framework源碼第2彈------Spring的整體架構(gòu)

Spring的整體架構(gòu)

Spring 框架是一個分層架構(gòu),它包括一系列的功能要素,并被分為大約20個模塊,如下圖所示:
在這里插入圖片描述

    Core Container(核心容器層)
    Core Container 包含有Core、Beans、Context和Expression Language模塊。
    Core和Beans模塊是框架的基礎(chǔ)部分,提供Ioc(控制反轉(zhuǎn))和依賴注入特性。
        Core模塊主要包括Spring框架基本的核心工具類,Spring的其他組件都要用到這個包里的類
        Beans 模塊是所有應(yīng)用都要用到的,它包含訪問配置文件、創(chuàng)建和管理Bean以及進行IOC/DI 操作相關(guān)的所有類。
        Context 模塊構(gòu)建與Core和Beans模塊基礎(chǔ)之上,提供了一種類似于JNDI注冊器的框架式的對象訪問方法。Context模塊繼承了Beans的特性。ApplicationContext接口是Context模塊的核心。
        Expression Language 模塊提供了一個強大的表達式語言用于在運行時查詢和操縱對象。它是JSP2.1規(guī)范中定義的unifed expression language的一個擴展。該語言支持設(shè)置/獲取屬性的值,屬性的分配,方法的調(diào)用,訪問數(shù)組上下文、容器和索引器、邏輯和算術(shù)運算符、命名變量以及從Spring的IOC容器根據(jù)名稱檢索對象。它也支持list投影、選擇和一般的list聚合。
    Data Access/Integration(數(shù)據(jù)訪問層)
    Data Access 層包含有JDBC、ORM、OXM、JMS和Transaction模塊。其中:
        JDBC模塊提供了一個JDBC抽象層,它可以消除冗長的JDBC編碼和解析數(shù)據(jù)庫廠商特有的錯誤代碼。這個模塊包含了Spring對JDBC數(shù)據(jù)訪問進行封裝的所有類。
        ORM模塊為流行的對象-關(guān)系映射API,如JPA、Hibernate、MyBatis等,提供了一個交互層。利用ORM封裝包,可以混合使用所有Spring提供的特性進行O/R映射。
        Transacton 模塊支持編程和聲明性的事務(wù)管理,這些事務(wù)必須實現(xiàn)特定的接口,并且對所有的POJO都適用。
    Web層
    Web 上下文模塊建立咋應(yīng)用程序上下文模塊之上,為基于Web的應(yīng)用程序提供了上下文。所以Spring 框架支持與Struts2的集成。Web模塊還簡化了處理多部分請求以及將請求參數(shù)綁定到對象的工作。Web層包含了Web、Web-Servelet、Web-Struts和Web-Porlet模塊。
        Web 模塊:提供了基礎(chǔ)的面向Web的集成特性。例如,多文件上傳,使用servlet listeners初始化IoC容器以及一個面向Web的應(yīng)用上下文,它還包括Spring遠程支持中Web的相關(guān)部分。
        Web-Servlet模塊,該模塊包含Spring的model-view-controller(MVC)實現(xiàn)。Spring的MVC框架使得模型范圍內(nèi)的代碼和web forms之間能夠清楚地分離開來,并與Spring 框架的其他特性集成在一起。
        Web-Porlet模塊:提供了用于Porlet 環(huán)境和Web-Servlet模塊的MVC的實現(xiàn)。
    AOP
    AOP模塊提供了一個符合AOP聯(lián)盟標準的面向切面編程的實現(xiàn)。它讓你可以定義例如方法攔截器和切點。從而將邏輯代碼分開,降低它們的耦合性。利用source-level的元數(shù)據(jù)功能,還可以將各種行為信息合并到你的代碼中。


作者:碼農(nóng)飛哥
微信公眾號:碼農(nóng)飛哥