Log歷練手冊 Spring事務管理不能提交異常

2022-09-13 11:15:13 字數 2019 閱讀 5563

使用@transactional之後,事務不能提交,費了一番功夫發現是@transactional(value=」「)這條資訊配錯,事務管理器沒有正常啟用

配置檔案如下

配置檔案如下說明如下

一共有四個屬性如下,

mode:指定spring事務管理框架建立通知bean的方式。可用的值有proxy和aspectj。前者是預設值,表示通知物件是個jdk**;後者表示spring aop會使用aspectj建立**

order:如果業務類除事務切面外,還需要織入其他的切面,通過該屬性可以控制事務切面在目標連線點的織入順序。

transaction-manager:指定到現有的platformtransaction manager bean的引用,通知會使用該引用

預設使用transactionmanager的事務管理器,若bean id命名為transactionmanager則不需要設定transaction-manager="transactionmanager4demo"

事務支援屬性如下

屬性型別

描述value

string

可選的限定描述符,指定使用的事務管理器

propagation

enum: propagation

可選的事務傳播行為設定

isolation

enum: isolation

可選的事務隔離級別設定

readonly

boolean

讀寫或唯讀事務,預設讀寫

timeout

int (in seconds granularity)

事務超時時間設定

rollbackfor

implements throwable

導致事務回滾的異常類陣列

rollbackforclassname

類名陣列,必須繼承自throwable

導致事務回滾的異常類名字陣列

norollbackfor

implements throwable

不會導致事務回滾的異常類陣列

norollbackforclassname

類名陣列,必須繼承自throwable

不會導致事務回滾的異常類名字陣列

傳播行為

propagation.required:表示當前方法必須執行在事務中。如果當前事務存在,方法將會在該事務中執行。否則,會啟動乙個新的事務

propagation.supports: 表示當前方法不需要事務上下文,但是如果存在當前事務的話,那麼該方法會在這個事務中執行

propagation.mandatory:表示該方法必須在事務中執行,如果當前事務不存在,則會丟擲乙個異常

propagation.requires_new:表示當前方法必須執行在它自己的事務中。乙個新的事務將被啟動。如果存在當前事務,在該方法執行期間,當前事務會被掛起。如果使用jtatransactionmanager的話,則需要訪問transactionmanager

propagation.not_supported:表示該方法不應該執行在事務中。如果存在當前事務,在該方法執行期間,當前事務將被掛起。如果使用jtatransactionmanager的話,則需要訪問transactionmanager

propagation.never:表示當前方法不應該執行在事務上下文中。如果當前正有乙個事務在執行,則會丟擲異常

propagation.nested:表示如果當前已經存在乙個事務,那麼該方法將會在巢狀事務中執行。巢狀的事務可以獨立於當前事務進行單獨地提交或回滾。如果當前事務不存在,那麼其行為與propagation.required一樣。注意各廠商對這種傳播行為的支援是有所差異的。可以參考資源管理器的文件來確認它們是否支援巢狀事務

Log歷練手冊 Spring事務管理不能提交異常

使用 transactional之後,事務不能提交,費了一番功夫發現是 transactional value 這條資訊配錯,事務管理器沒有正常啟用 配置檔案如下 配置檔案如下說明如下 一共有四個屬性如下,mode 指定spring事務管理框架建立通知bean的方式。可用的值有proxy和aspec...

Spring事務管理

spring是ssh中的管理員,負責管理其它框架,協調各個部分的工作。今天一起學習一下spring的事務管理。spring的事務管理分為宣告式跟程式設計式。宣告式就是在spring的配置檔案中進行相關配置 程式設計式就是用註解的方式寫到 裡。下面先說宣告式 spring配置檔案中關於事務配置總是由三...

spring事務管理

一 xml配置事務 二 註解的方式配置事務 bean id txmanaager class org.springframework.orm.hibernate3.hibernatetransactionmanager property name sessionfactory ref session...