關於Spring

Spring總體架構:前端

Core Container數據庫

Core Container(核心容器)包含Beans、Core、Context、EspL四個模塊編程

Core和Beans是Spring的基礎部分,提供IOC(控制反轉)和DI(依賴注入)後端

  • Core模塊

該模塊主要包含Spring基本的核心工具類,Spring的其餘組件都要使用其中的類,Core模塊是其餘組件的基本核心。設計模式

  • Beans模塊

Beans是全部應用都要用到的,它包含訪問配置文件,建立和管理bean以及進行(IOC/DI)操做相關的類。架構

  • Context模塊

Context模塊提供對外接口,該模塊爲Spring的核心提供了大量擴展。ApplicationContext接口是Context模塊的關鍵。app

  • Expression Language模塊

該提供了一個強大的表達式語言用於在運行時查詢和操做對象。框架

Data Access函數

Data Access/Integration包含有JDBC,ORM,OXM,JMS和Transaction五個模塊。工具

  • JDBC模塊

該模塊提供了一個JDBC抽象層,它能夠消除冗長的JDBC編碼和解析數據庫廠商特有的錯誤代碼。這個模塊包含了Spring對JDBC數據訪問進行封裝的類。

  • ORM(對象-關係映射)

該模塊就是對象-關係映射API。

  • OXM模塊

該模塊提供了一個對Object/XML映射實現的抽象層,Object/XML映射實現包括JAXB,Castor,XMLBeans,JiBX和XStream。

  • JMS(Java Messaging Service)模塊

主要包含了一些製造和消費信息的特性。

  • Transcation模塊

該模塊主持編程和聲明性的事務管理,這些事務必須實現特定的接口,而且對全部的POJO(簡單Java對象,即沒有繼承任何類,沒有實現任何接口,沒有被框架入侵的Java對象)都使用。

Web

Web上下文模塊創建在應用程序上下文模塊之上,爲基於Web的應用程序提供了上下文。

AOP

AOP模塊提供了一個符合AOP聯盟標準的面向切面的實現。它讓咱們能夠定義例如***和切點,從而將邏輯代碼分開,下降它們之間的耦合度。

Test

Test模塊支持使用JUnit和TestNG對Spring組件進行測試

Spring的三種注入方式

  • 構造函數注入
  • setter注入
  • 接口注入

Spring的事務管理

聲明式事務管理(使用) 將業務代碼和事務管理分離,只需用註解和XML配置來管理事務,經過AOP實現

在同一個類裏,一個沒有加註解的調用加註解的,被調用方法的事務也是不會生效的.

Spring事務傳播行爲

  • PROPAGATION_REQUIRED(默認) 若是當前沒有事務,就新建一個事務,若是已經存在一個事務中,加入到這個事務中
  • PROPAGATION_SUPPORTS 支持當前事務,若是當前沒有事務,就以非事務方式執行
  • PROPAGATION_MANDATORY 使用當前的事務,若是當前沒有事務,就拋出異常
  • PROPAGATION_REQUIRES_NEW 新建事務,若是當前存在事務,把當前事務掛起
  • PROPAGATION_NOT_SUPPORTED 以非事務方式執行操做,若是當前存在事務,就把當前事務掛起
  • PROPAGATION_NEVER 以非事務方式執行,若是當前存在事務,則拋出異常
  • PROPAGATION_NESTED 若是當前存在事務,則在嵌套事務內執行。若是當前沒有事務,則執行PROPAGATION_REQUIRED 相似的操做

SpringMVC流程

  1. 用戶發送請求至 前端控制器DispatcherServlet。
  2. 前端控制器DispatcherServlet收到請求後調用處理器映射器HandlerMapping。
  3. 處理器映射器HandlerMapping。
  4. 根據請求的Url找到具體的處理器,生成處理器對象Handler及處理器***HandlerIntercepter(若是有則生成)一併返回給前端控制器DispatcherServlet。
  5. 前端控制器DispatcherServlet經過處理器適配器HandlerAdapter調用處理器Controller。
  6. 執行處理器(Controller,也叫後端控制器)處理器Controller執行完後返回ModelAndView。
  7. 處理器映射器HandlerAdapter將處理器Controller執行返回的結果ModelAndView返回給前端控制器DispatcherServlet。
  8. 前端控制器DispatcherServlet將ModelAnView傳給視圖解析器ViewResolver。
  9. 視圖解析器ViewResolver解析後返回具體的視圖View。
  10. 前端控制器DispatcherServlet對視圖View進行渲染視圖(即:將模型數據填充至視圖中)
  11. 前端控制器DispatcherServlet響應用戶。

Spring涉及的設計模式

  1. 簡單工廠模式
    Spring中的BeanFactory就是簡單工廠模式的體現,根據傳入一個惟一的標識來得到Bean對象
  2. 工廠方法模式
    Spring中的FactoryBean就是典型的工廠方法模式
  3. 單例模式
    保證一個類僅有一個實例,並提供一個訪問它的全局訪問點。
    Spring中的單例模式完成了後半句話,即提供了全局的訪問點BeanFactory。但沒有從構造器級別去控制單例
  4. 適配器模式
    Spring在***上採用了適配器模式。
  5. 裝飾器模式
    Spring中用到的包裝器模式在類名上有兩種表現:一種是類名中含有Wrapper,另外一種是類名中含有Decorator。基本上都是動態地給一個對象添加一些額外的職責。
  6. 代理模式
    Spring的Proxy模式在aop中有體現
  7. 觀察者模式
    Spring中Observer模式經常使用的地方是listener的實現。如ApplicationListener。
  8. 策略模式
    Spring中在實例化對象的時候用到Strategy模式。
  9. 模板方法模式 JdbcTemplate使用了模板方法模式。
相關文章
相關標籤/搜索