Spring的事务管理

时间:2022-06-08 20:32:47

Spring事务管理

说明:

  这里只介绍Spring是如何配置事务,其他的如项目搭建,框架的整合不做介绍。

声明式事务管理:

  1、基于XML配置文件实现

  2、基于注解实现

配置方法:

方法一:基于XML配置文件实现

  步骤一:配置事务管理器

<!-- 配置事务管理器 -->
<bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource" />
</bean>

  步骤二:配置事务增强

<!-- 拦截器方式配置事物 -->
     <tx:advice id="transactionAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="add*" propagation="REQUIRED"  rollback-for="Java.lang.RuntimeException"/>
            <tx:method name="append*" propagation="REQUIRED" />
            <tx:method name="save*" propagation="REQUIRED" />
            <tx:method name="update*" propagation="REQUIRED" rollback-for="Java.lang.RuntimeException"/>
            <tx:method name="modify*" propagation="REQUIRED" />
            <tx:method name="edit*" propagation="REQUIRED" />
            <tx:method name="insert*" propagation="REQUIRED" rollback-for="Java.lang.RuntimeException"/>
            <tx:method name="del*" propagation="REQUIRED"  rollback-for="Java.lang.RuntimeException"/>
            <tx:method name="remove*" propagation="REQUIRED" />
            <tx:method name="repair*" propagation="REQUIRED" />
            <tx:method name="reset*" propagation="REQUIRED" />
            <tx:method name="getScoreList*" propagation="REQUIRED" />
            <tx:method name="batch*" propagation="REQUIRED"  rollback-for="Java.lang.RuntimeException"/>
            <tx:method name="get*" propagation="REQUIRED" read-only="true" />
            <tx:method name="find*" propagation="REQUIRED" read-only="true" />
            <tx:method name="load*" propagation="REQUIRED" read-only="true" />
            <tx:method name="search*" propagation="REQUIRED" read-only="true" />
            <tx:method name="datagrid*" propagation="REQUIRED" read-only="true" />
            <tx:method name="querySeqNo*" propagation="NOT_SUPPORTED" read-only="true" />
            <tx:method name="*" propagation="REQUIRED" read-only="true" />
        </tx:attributes>
    </tx:advice>

  步骤三:配置切面

<aop:config>
     <aop:pointcut id="transactionPointcut" expression="execution(* com.service.*.*.*(..))" />
     <aop:advisor pointcut-ref="transactionPointcut" advice-ref="transactionAdvice" />
</aop:config>

方法二:基于注解实现

  步骤一:配置事务管理器

<!-- 配置事务管理器 -->
    <bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>

  步骤二:配置事务注解

<tx:annotation-driven transaction-manager="transactionManager" />

  步骤三:在要使用事务的方法所在类上使用注解

Spring的事务管理

总结:以上就是Spring事务的两种不同的配置方式,根据需要选择其中一种即可。