spring事務配置

2022-07-31 09:21:15 字數 1627 閱讀 1941

工作中不一定是每執行一條sql語句就進行提交,有可能是一批業務的操作,這一批sql語句,要麼全部執行成功,要麼全部執行失敗。因此就需要用到事務來進行管理。

在spring中,提供了對事務的管理類。

首先需要在beans的配置檔案上新增tx的命名空間和位址

xmlns:tx=""

/spring-tx-4.3.xsd

同時配置進行事務管理的資料來源

<

bean

id="transactionmanager"

class

="org.springframework.jdbc.datasource.datasourcetransactionmanager"

>

<

property

name

="datasource"

ref="datasource"

/>

bean

>

<

tx:annotation-driven

transaction-manager

="transactionmanager"

/>

以上配置完成後,即可在程式的資料持久層進行事務管理。

在想要進行事務控制的類或public方法上使用註解@transactional

@override

@transactional

public

void insert(listlist)

如上,如果乙個類中,類和方法都使用了該註解,以方法上的註解為優先。如果方法的修飾詞不是public,雖然不會報錯,但事務不會被管理。

@transactional中的屬性

propagation:可選的傳播性設定,引數為列舉

isolation:可選的隔離性設定,引數為列舉

readonly:可讀性,引數為boolean

timeout:超時時間,以s為單位,引數為int型別

rollbackfor:遇見指定的異常則回滾,引數是class型別,且必須為throwable子類,可以是乙個引數rollbackfor=exception.class或多個rollbackfor=。

rollbackforclassname:遇見指定的異常的名稱則回滾,引數是string,但必須是throwable子類的名稱。可以是乙個引數或多個。

norollbackfor:遇見指定的異常則必須不回滾,引數同rollbackfor。

norollbackforclassname:遇見指定的異常的名稱則必須不回滾,引數同rollbackforclassname。

由於以上方式需要對每個進行事務管理的地方都增加註解@transactional,因此可以使用aop配合,對多個類(方法)進行事務管理。

注意事項

1、@transactional預設丟擲異常為runableexception類及下面子類,如果所丟擲的類不屬於該範圍,例如丟擲exception型別的異常,則不會觸發事務回滾。

2、@transactional只對public型別有效,其他型別雖然不會報錯,但是均無效。

3、@transactional只對方法中丟擲的異常觸發回滾,如果異常在方法中已經**獲和處理,則不會觸發回滾。

spring 事務配置

自己寫的乙個關於事務的配置例子,很簡單 主要是spring的事務可以借助於aop直接環繞在target屬性所對應操作的周圍。無須為事務寫多餘的 即輕便又減少了耦合。配置檔案部分 bean.xml 由於是簡單的例子所以就不寫那麼規範了 class部分 package com.f9inux.test i...

spring事務配置

1 宣告式事務配置 配置sessionfactory 配置事務管理器 事務的傳播特性 那些類那些方法使用事務 具體配置如下 localsessionfactorybean classpath hibernate.cfg.xml 這個classpath是spring為我們提供的專門用來讀取classp...

配置spring 事務

三 在編寫買書方法 事務的傳播行為 乙個事務方法被另乙個事務方法呼叫,被呼叫的事務方法如何工作在事務中 使用propagation 指定事務的傳播行為,即當前的事務被另乙個事務方法呼叫時 transactional propagation propagation.required override ...