天天看點

java spring 事務處理_Spring架構事務處理和SpringMVC

事務管理務原本是資料庫中的概念,在Dao層。但一般情況下,需要将事務提升到業務層,即Service層。這樣做是為了能夠使用事務的特性來管理具體的業務。

Spring事務管理事務管理器是PlatformTransactionManager接口對象。其主要用于完成事務的送出、復原,及擷取事務的狀态資訊。

PlatformTransactionManager:接口常用的兩個實作類

DataSourceTransactionManager:使用JDBC或MyBatis 進行持久化資料時使用。

HibernateTransactionManager:使用Hibernate進行持久化資料時使用。

Spring的復原方式

Spring事務的預設復原方式是:發生運作時異常時復原,發生受查異常時送出

接口TransactionDefinitiond定義的事務的常量

事務定義接口事務定義接口TransactionDefinition中定義了事務描述相關的三類常量:事務隔離級别、事務傳播行為、事務預設逾時時限,及對它們的操作。

事務傳播行為:所謂事務傳播行為是指,處于不同僚務中的方法在互相調用時,執行期間事務的維護情況。如,A事務中的方法doSome()調用B事務中的方法doOther(),在調用執行期間事務的維護情況,就稱為事務傳播行為。

事務具有哪些特性原子性:一個事務是一個不可分割的工作機關,事務中包括的操作要麼都做,要麼都不做。

一緻性:事務必須是使資料庫從一個一緻性狀态變到另一個一緻性狀态。一緻性與原子性是密切相關的。

隔離性:一個事務的執行不能被其他事務幹擾。即一個事務内部的操作及使用的資料對并發的其他事務是隔離的,并發執行的各個事務之間不能互相幹擾。

持續性:持續性也稱永久性(permanence),指一個事務一旦送出,它對資料庫中資料的改變就應該是永久性的。接下來的其他操作或故障不應該對其有任何影響。

AspectJ的AOP配置方式管理事務的spring配置注冊事務管理器。

注冊事務通知

aop配置

代碼示例:

事務注解管理事務的spring配置注冊事務管理器。

配置注解驅動

代碼示例:

transaction-manager配置對應的是事物管理器的id

MVC介紹MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,它是一種軟體設計典範,是一種軟體架構設計分層模式。

Model(模型)是應用程式中用于處理應用程式資料邏輯的部分。

View(視圖)是應用程式中處理資料顯示的部分。

Controller(控制器)是應用程式中處理使用者互動的部分。

最典型的MVC就是JSP + servlet + javabean的模式。

MVC發展曆史Model 1 (jsp+javabean)

Model 2 (jsp+servlet+javabean)

Model1和Model2的優缺點

目前主流的MVC架構SpringMVC

Struts

JfinalSpringMVC(主流MVC架構):是spring架構的一部分(子架構),是實作對Servlet技術進行封裝。

SpringMVC開發步驟導入jar包

配置web.xml,注冊SpringMVC前端控制器(中央排程器)

編寫SpringMVC後端控制器

編寫springmvc配置檔案,注冊後端控制器(注意id寫法格式)

編寫跳轉資源頁面

SpringMVC請求處理流程① 使用者發送請求到springmvc架構提供的DispatcherServlet 這個前端控制器

② 前端控制器會去找處理器映射器(HandlerMapping),處理器映射器根據請求url找到具體的處理器,生成處理器對象及處理器攔截器(如果有則生成)一并傳回給DispatcherServlet 。

③ 根據處理器映射器傳回的處理器,DispatcherServlet 會找“合适”的處理器擴充卡(HandlerAdapter)

④ 處理器擴充卡HandlerAdpater會去執行處理器(Handler開發的時候會被叫成Controller也叫後端控制器) 執行之前會有轉換器、資料綁定、校驗器等等完成上面這些才會去正在執行Handler

⑤ 後端控制器Handler執行完成之後傳回一個ModelAndView對象

⑥ 處理器擴充卡HandlerAdpater會将這個ModelAndView傳回前端控制器DispatcherServlet。前端控制器會将ModelAndView對象交給視圖解析器ViewResolver。

⑦ 視圖解析器ViewResolver解析ModelAndView對象之後傳回邏輯視圖。

⑧ 前端控制器DispatcherServlet對邏輯視圖進行渲染(資料填充)之後傳回真正的實體View并響應給浏覽器。

靜态資源無法通路解決方案(三種)

第一種在web.xml中進行資源放行

第二種在SpringMVC配置檔案中使用MCV标簽default-servlet

第三種在SpringMVC配置檔案中使用MVC标簽的resource

其中location為資源檔案路徑,mapping的值為映射路徑