spring事務配置一

2021-08-29 20:06:42 字數 1993 閱讀 1333

通常建議採用宣告式事務管理。宣告式事務管理的優勢非常明顯:**中無需關於關注事務邏輯,讓spring宣告式事務管理負責事務邏輯,宣告式事務管理無需與具體的事務邏輯耦合,可以方便地在不同事務邏輯之間切換。

宣告式事務管理的配置方式,通常有如下三種:

1.使用transactionproxyfactorybean為目標bean生成事務**的配置。此方式是最傳統,配置檔案最臃腫、難以閱讀的方式。

2.採用bean繼承的事務**配置方式,比較簡潔,但依然是增量式配置。

3.使用beannameautoproxycreator,根據bean name自動生成事務**的方式,這是直接利用spring的aop框架配置事務**的方式,需要對spring的aop框架有所理解。但這種方式避免了增量式配置,效果非常不錯。

4.defaultadvisorautoproxycreator:這也是直接利用spring的aop框架配置事務**的方式,效果也非常不多,只是這種配置方式的可讀性不如第三種方式。

一. 利用transactionproxyfactorybean生成事務**

採用這種方式的配置時候,配置檔案的增加非常快,每個bean有需要兩個bean配置,乙個目標,另外還需要使用transactionproxyfactorybean配置乙個**bean。

這是一種最原始的配置方式,下面是使用transactionproxyfactorybean的配置檔案:

<?xml version="1.0" encoding="gb2312"?>

com.mysql.jdbc.driver

jdbc:mysql://localhost:3306/spring

root

32147

org.hibernate.dialect.mysqldialect

update

propagation_required,readonly

在上面的配置檔案中,persondao需要配置兩個部分,乙個是persondao的目標bean,該目標bean是實際dao bean,以實際的dao bean為目標,建立事務**。乙個元件,需要來個bean組成,乙個目標bean,乙個事務**。

這種配置方式還有乙個壞處:目標bean直接暴露在spring容器中,可以直接引用,如果目標bean被誤引用,將導致業務操作不具備事務性。

為了避免這種現象,可將目標bean配置成巢狀bean,下面是目標bean和事務**的配置片段:

propagation_required,readonly

二. 利用繼承簡化配置

大部分情況下,每個事務**的事務屬性大同小異,事務**的實現類都是transactionproxyfactorybean,事務**bean都必須注入事務管理器。

對於這種情況,spring提供了bean與bean之間的繼承,可以簡化配置。將大部分的通用配置,配置成事務模板,而實際的事務**bean,則繼承事務模板。這種配置方式可以減少部分配置**,下面是採用繼承的配置檔案:

<?xml version="1.0" encoding="gb2312"?>

com.mysql.jdbc.driver

jdbc:mysql://localhost:3306/spring

root

32147

org.hibernate.dialect.mysqldialect

update

propagation_required,readonly

propagation_required

這種配置方式,相比前面直接採用transactionproxyfactorybean的事務** 配置方式,可以大大減少配置檔案的**量。每個事務**的配置都繼承事務模板,無需重複指定事務**的實現類,無需重複指定事務傳播屬性--當然,如果新 的事務**有額外的事務屬性,也可指定自己的事務屬性,此時,子bean的屬性覆蓋父bean的屬性。當然每個事務**bean都必須配置自己的目標 bean,這不可避免。

上面的配置可看出,事務**的配置依然是增量式的,每個事務**都需要單獨配置--雖然增量已經減少,但每個事務**都需要單獨配置。

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 ...