使用@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...