2025-05-23

Spring聲明式事務功能應該是大傢應用Spring中使用的最多的功能之一瞭,的確該功能極大的簡化瞭大傢對數據庫操作的。目前Spring支持的聲明式事務有兩個配置方式,一種是XML配置方式,另一種是註解方式


 



針對配置這塊,XML配置同學們會覺得比較麻煩,特別是針對事務屬性的配置,所以補充一下本塊配置說明,特分享給大傢,希望對大傢有幫助。


下面是Spring的XML配置事務比較常用的方式,也是我們這邊事務XML配置事務的使用方式,本文以該種配置為例,進行說明。


    <bean id=”transactionInterceptor”
        class=”org.springframework.transaction.interceptor.TransactionInterceptor”>
        <property name=”transactionManager” ref=”transactionManager” />
        <property name=”transactionAttributes”>
            <props>
                <prop key=”query*”>PROPAGATION_REQUIRED,readOnly</prop>
                <prop key=”is*”>PROPAGATION_REQUIRED,readOnly</prop>
                <prop key=”find*”>PROPAGATION_REQUIRED,readOnly</prop>
                <prop key=”get*”>PROPAGATION_SUPPORTS,readOnly</prop>
                <prop key=”load*”>PROPAGATION_REQUIRED,readOnly</prop>
                <prop key=”*”>PROPAGATION_REQUIRED</prop>
            </props>
        </property>
    </bean>


 


配置詳解說明如下:


 TransactionInterceptor 是聲明式事務攔截器。可以由Spring AOP攔截器進行回調。


 transactionAttributes 是事務屬性的配置說明,也是大傢覺得比較不好配置,不太容易記憶的地方


它的配置規則如下:因為都有前綴標識,所以順序可以修改。


(PROPAGATION_NAME,ISOLATION_NAME,readOnly,timeout_NNNN,+Exception1,-Exception2)


  PROPAGATION_REQUIRED 事務的傳播級別(以PROPAGATION_開頭). 可設置值說明如下:


PROPAGATION_REQUIRED 使用當前事務,如果當前沒有事務,則開啟新事務


PROPAGATION_SUPPORTS 當前有事務則用,沒有事務則不用


PROPAGATION_MANDATORY 當前有事務就用,沒有事務則報錯(必須要用事務)


PROPAGATION_REQUIRES_NEW 當前有事務則掛起原事務,新啟事務(必開新事務)


PROPAGATION_NOT_SUPPORTED 不使用事務,如果當前有事務,則掛起事務


PROPAGATION_NEVER 不能有事務,如果當前有事務,則報錯(必須沒有事務)


PROPAGATION_NESTED 同 PROPAGATION_REQUIRED


 


 ISOLATION_DEFAULT 事務隔離級別(以ISOLATION_開頭)


ISOLATION_DEFAULT  使用數據庫默認事務


ISOLATION_READ_UNCOMMITTED


ISOLATION_READ_COMMITTED


ISOLATION_REPEATABLE_READ


ISOLATION_SERIALIZABLE


 readOnly


如果設置,則表示隻讀事務,如果不設置,則表示讀來事務


TIMEOUT_DEFAULT 事務超時設置(timeout_ 開頭)


單位是秒。 例如 timeout_20, 則表示事務超時時間是20秒。


 +Exception 表示遇到該異常時,執行回滾


 –Exception 表示遇到該異常時,不執行加滾


transactionManager 是事務管理器,針對不同的持久層,事務都會提供不同的實現。其接口都是org.springframework.transaction.PlatformTransactionManager


 


XML配置事務方式的優點就是不用改任何代碼,希望此份配置詳解可以對大傢有幫助

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *