Spring的事务管理

1.Spring的事务(基于AOP技术,事务的切面类及通知已经由Spring提供)

  1.Spring事务隔离级别采用数据库默认的隔离级别

  2.事务的传播行为常量(使用默认值)

    事务的传播行为:解决的是业务层之间的方法调用

  PROPAGATION_REQUIRED(默认值) -- A中有事务,使用A中的事务.如果没有,B就会开启一个新的事务,将A包含进来.(保证A,B在同一个事务中)

2.Spring的事务管理XML开发方式

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

  2.2.配置事务增强

<!-- 配置事务增强 -->
        <tx:advice id="txAdvice" transaction-manager="transactionManager">
            <tx:attributes>
                <!--
                    name        :绑定事务的方法名,可以使用通配符,可以配置多个。
                    propagation    :传播行为
                    isolation    :隔离级别
                    read-only    :是否只读
                    timeout        :超时信息
                    rollback-for:发生哪些异常回滚.
                    no-rollback-for:发生哪些异常不回滚.
                 -->
                <!-- 哪些方法加事务 -->
                <tx:method name="pay" propagation="REQUIRED"/>
            </tx:attributes>
        </tx:advice>

  2.3.配置AOP的切面  

    <!-- 配置AOP切面产生代理 -->
    <aop:config>
      <aop:advisor advice-ref="myAdvice" pointcut="execution(* com.fff.demo.AccountServiceImpl.pay(..))"/>
    </aop:config>

  注意:如果是自己编写的切面,使用<aop:aspect>标签,如果是系统制作的,使用<aop:advisor>标签

3.Spring的事务管理注解方式

  3.1.配置事务管理器

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

  3.2.开启注解事务

    <!-- 开启注解事务 -->
    <tx:annotation-driven transaction-manager="transactionManager"/>

  3.3.在业务层上添加一个注解:@Transactional

posted @ 2018-12-13 20:53  人生如&逆旅  阅读(172)  评论(0编辑  收藏  举报