Spring開發基礎之Spring事務管理

2021-04-13 08:17:09 字數 2090 閱讀 6083

spring提供的事務管理 

spring提供的事務管理可以分為兩類:程式設計式的和宣告式的。程式設計式的,比較靈活,但是**量大,存在重複的**比較多;宣告式的比程式設計式的更靈活。

傳統使用jdbc的事務管理

***************= 

以往使用jdbc進行資料操作,使用datasource,從資料來源中得到connection,我們知道資料來源是執行緒安全的,而連線不是執行緒安全的,所以對每個請求都是從資料來源中重新取出乙個連線。一般的資料來源由容器進行管理,包括連線池。例如tomcat,websphere,weblogic等這些j2ee商業容器都提供了這個功能。

以往的我們使用jdbc在寫**時,事務管理可能會是這樣:

connection conn = null;

trycatch(exception e)

finally

catch(sqlexception se)

//close resultset,preparedstatement,connection 

//notice:maybe ocurr exception when u close rs,pstmt,conn

}按照以往的思路來寫**,**量比較長,而且容易疏忽,忘掉一些try/catch,引發一些異常無法catch,雖然有時候我們會寫dbtool類,來關閉這些資源,並且保證在關閉這些資源時,不向外拋異常。

spring提供的程式設計式的事務處理

***************===

spring提供了幾個關於事務處理的類: transactiondefinition //事務屬性定義

transcationstatus //代表了當前的事務,可以提交,回滾。

platformtransactionmanager這個是spring提供的用於管理事務的基礎介面,其下有乙個實現的抽象類abstractplatformtransactionmanager,我們使用的事務管理類例如datasourcetransactionmanager等都是這個類的子類。

我們使用程式設計式的事務管理流程可能如下:

1 宣告資料來源

2 宣告乙個事務管理類,例如datasourcetransactionmanager,hibernatetransactionmanger,jtatransactionmanager等

3 在我們的**中加入事務處理**:

transactiondefinition td = new transactiondefinition();

transactionstatus ts = transactionmanager.gettransaction(td);

trycatch(exception e)

使用spring提供的事務模板transactiontemplate

void add()}}

transactiontemplate也是為我們省去了部分事務提交、回滾**;定義事務模板時,需注入事務管理物件.

spring宣告式事務處理

**********===

spring宣告式事務處理也主要使用了ioc,aop思想,提供了transactioninterceptor***和常用的**類transactionproxyfactorybean,可以直接對元件進行事務**。

使用transactioninterceptor步驟

1.定義資料源,事務管理類

2.定義事務***,such as:

com.test.usermanager.*r=propagation_required

3.為元件宣告乙個**類:proxyfactorybean

com.test.usermanager

使用transactionproxyfactorybean:

propagation_required

propagation_required

propagation_required,readonly

transactionproxyfactorybean只是為元件的事務**,如果我們要給元件新增一些業務方面的驗證等,可以使用transactiontemplate加***方式,為元件新增多個***,spring aop中提供了三類advice,即前增強,後增強,丟擲異常時的增強,可以靈活使用。

Spring初學者的每一步之配置Spring

以前都有接觸過spring但是都沒有很系統的去學習過,到現在重新去拿起spring的時候,發現都忘的差不多了 好吧,又重新來過,這次呢,從頭開始,希望能夠學得系統一點!現在,開始配置spring 1.首先要匯入springframework的包,在這裡我用的是最新的spring4.2.3 這裡面沒有...

Spring全家桶之spring基礎

於 15個經典的spring面試常見問題 spring模組?談談自己對於 spring ioc 和 aop 的理解 spring aop 和 aspectj aop 有什麼區別?spring 中的 bean 的作用域有哪些?spring 中的單例 bean 的執行緒安全問題了解嗎?spring 中的...

Spring 開發之元件賦值

1.value propertysource 1.1 使用方式 propertysource 讀取外部配置檔案中的 k v 儲存到執行的環境變數中 載入完外部的配置檔案以後使用 取出配置檔案的值 value 賦值 基本數值 可以寫 spel,可以寫 取出配置檔案 properties 中的值 在執行...