spring 事务(AOP配置事务、注解)

介绍

Spring支持多种事务管理,常用的有:

  • AOP配置事务
  • 注解配置事务

注解配置事务

在service需要事务的方法上声明: @Transactional 注解
目前 及 未来主流方式

使用简单,但需要手动加上注解,否则spring不会管理事务

哪些异常会引起回滚

默认是 RuntimeException 运行时异常才会引发 回滚

如果想 发生异常时就回滚,改成下面方式:

@Transactional(rollbackFor = Exception.class)

AOP配置事务

一般多用于 xml配置文件,是传统的配置方法

配置较复杂,一旦配置成功,能够匹配切入点表达式的方法,将由spring管理事务

不再需要增加额外的代码

例子

spring 事务tx:advice标签配置说明

<!-- 注册数据源 C3P0 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"  >
     <property name="driverClass" value="${jdbc.driverClass}"></property>
     <property name="jdbcUrl"  value="${jdbc.url}"></property>
     <property name="user"  value="${jdbc.username}"></property>
     <property name="password" value="${jdbc.password}"></property>
</bean>
<!-- 事务管理器 -->
<bean id="tracnsactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"></property>
</bean>

<tx:advice id="txAdvice" transaction-manager="tracnsactionManager">
    <tx:attributes>
        <!-- 为连接点指定事务属性 -->
        <tx:method name="save*" isolation="DEFAULT" propagation="REQUIRED" rollback-for="Exception"/>
        <tx:method name="update*" isolation="DEFAULT" propagation="REQUIRED" rollback-for="Exception"/>
        <tx:method name="delete*" isolation="DEFAULT" propagation="REQUIRED" rollback-for="Exception"/>
    </tx:attributes>
</tx:advice>

<aop:config>
    <!-- 切入点配置 -->
    <aop:pointcut expression="execution(* *..service.*.*(..))" id="point"/>
    <aop:advisor advice-ref="txAdvice" pointcut-ref="point"/>
</aop:config>

原文出处:/show_1IX9fw25OzC.html