美文网首页
Spring声明式事务(待完善)

Spring声明式事务(待完善)

作者: 8813d76fee36 | 来源:发表于2018-02-09 23:00 被阅读20次

    什么是声明式事务

    声明式事务

    声明式事务让我们不去手动编写事务开启和提交、回滚等代码,而是交给第三放框架自动管理,如Spring。

    声明式事务使用方式

    • Spring 早期实现方式
      ProxyFactoryBean + XML
    • AOP实现
      tx:advice + aop命名空间 —— 一次配置,永久生效
    • 注解实现(推荐)
      使用@Transactional —— 注解控制

    事务方法嵌套

    这是声明式事务独有的概念 —— 事务方法的嵌套。
    提现在事务的传播行为上。
    Spring的默认事务行为是propagation_required。当有新的事务时,如果已存在事务,直接加入到原有的事务;否则创建新的事务。

    什么时候回滚事务

    对于Spring的声明式事务来说,它的回滚时机是当方法抛出运行期异常(RuntimeException)时。如果抛出的是非运行期异常,则不会回滚。
    避免不当地使用try-catch,以免没有正确抛出运行期异常,导致声明式事务失效。

    使用注解控制事务的优点

    使用org.springframework.transaction.annotation.Transactional注解控制事务有以下优点:

    • 开发团队达成一致约定,明确标注事务方法的编程风格。
    • 保证事务方法的执行时间尽可能短。
    • 不要穿插其他的网络操作(RPC/HTTP)请求。
    • 若仍然需要网络操作,要剥离到事务方法外。可将网络操作封装为上层方法,将结果作为参数传入到开启事务的方法中。
    • 不是所有的方法都需要事务。如只有一条修改操作、只读操作不需要事务控制。(详细看MySQL行级锁)

    相关文章

      网友评论

          本文标题:Spring声明式事务(待完善)

          本文链接:https://www.haomeiwen.com/subject/gmgqtftx.html