Spring中程式設計式事務與申明式事務的配置步驟

2021-05-22 18:17:39 字數 2538 閱讀 5047

程式設計式事務(少用):

a) 需要事務處理的dao類需繼承namedparameterjdbcdaosupport這個類;

c) 往dao中注入資料來源;

d) 配置事務管理器,並往事務管理器中注入資料來源;

e)往dao中注入事務管理器。

a) 需要事務處理的dao類需繼承namedparameterjdbcdaosupport這個類;

c) 往dao中注入資料來源;

d) 配置事務管理器,並往事務管理器中注入資料來源;

e) 配置事務模板,並往事務模板中注入事務管理器;

f)往dao中注入事務模板。

總結:dao(繼承namedparameterjdbcdaosupport,並注入資料來源

)-->事務模板-->事務管理器(資料來源)-->資料來源

申明式事務:

1)使用**工廠:

步驟

1:宣告委託物件,如:

步驟

2:

定義事務管理器,如:

步驟

3:建立事務**父工廠

注意:

1. abstract=

「true

「說明該工廠為抽象工廠

,無法進行物件處理

,只能被繼承

2. transactionattributes

表示設定事務的傳播屬性

步驟

4:建立事務子工廠

步驟

5:

呼叫:往需要

userdao

物件的呼叫者注入

userdao

注意:注入的是**了

userdao

物件的事務子工廠,並且使用介面宣告。

如:iuserdao userdaoproxy;

//省略get

,set

方法

2)使用命名空間(一般使用這個):  

步驟1:引入命名空間

步驟2:定義事務通知者

advice

步驟3:再通過aop織入

這就是定義了乙個

pointcut

,該pointcut表示「

在com.softfz.jdbctemplate

包下所有的方法」。

expression="execution(* com.cj.transaction.service.*.*(..))"

中幾個萬用字元的含義:

第乙個* ——

通配任意返回值型別

第二個* ——通配包

com.cj.transaction.service

下的任意

class

第三個* ——通配包

com.cj.transaction.service

下的任意

class

的任意方法

第四個.. ——

通配方法可以有

0個或多個引數

注意:第乙個

*後面有乙個空格

申明式事務中異常處理:

spring

中,將為委託物件的每個方法建立事務,

spring

的事務支援預設對執行期異常

(runtimeexception)

進行回滾

,而runtimeexception

無需開發者顯式宣告。

如果手動捕獲異常,則

spring

容器認為開發者試圖進行手動事務回滾,將無法用

spring

容器來進行事務回滾。

但是如果是發生非

runtimeexception

及其子類的異常,則

spring

容器無法進行事務處

理,如果需要管理,需要進行相關配置,**如下:

propagation_required,-filenotfoundexception

readonly

spring程式設計式事務

程式設計式事務 需要編寫 控制事務在 開始,提交,回滾。public class stucardserviceimpl implements stucardservice scdao.updatestucardbycardno sourcecard system.out.println 支付完成!商...

spring中JDBC程式設計式事務

在spring採用純jdbc進行資料庫操作 org.gjt.mm.mysql.driver jdbc mysql localhost 3306 test root root 測試 package com.spring.jdbc import org.springframework.beans.fac...

spring 程式設計式事務控制

賬戶的業務成層實現類 事務控制應該都是在業務層 public class accountserviceimpl implements iaccountservice private transactiontemplate transactiontemplate public void settran...