zoukankan      html  css  js  c++  java
  • 【spring-boot】spring-boot 事物管理——之注解@Transactional

    设置事务管理

    在Spring Boot中推荐使用@Transactional注解来申明事务。

    首先需要导入依赖:

    <dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-starter-jdbc</artifactId>

    </dependency>

    当引入jdbc依赖之后,Spring Boot会自动默认分别注入DataSourceTransactionManager或JpaTransactionManager,所以我们不需要任何额外配置就可以用@Transactional注解进行事务的使用。

    在Service中添加@Transactional注解

    后补:

    事务的嵌套概念
     * 所谓事务的嵌套就是两个事务方法之间相互调用。spring事务开启 或是基于接口或是基于类的代理被创建
     * 注意一定是代理,不能手动new一个对象。并且此类有无接口都行,一定要被代理 spring中的bean只要纳入IOC管理被代理的
     * 所以同一个类中搞得一个方法调用另一个方法有事务的方法,事务是不会起作用的
     * spring 默认情况下不会对运行期列外runtimeExceptipon 既uncheck异常 进行事务回滚、
     * 如果遇到cheched异常就不会回滚。
     * 如果改变默认规则
     *   让checked例外也回回滚。在整个方法上加上@Trancational(rollbackFor=Exception.class)
     *   2.让unchecked例外不回滚,#Trancational(notRollbackFor=RunTimeExcepiton.class)

    spring事务传播属性
     *   在spring的TrancationDefination接口中一定定义了6中事务传播属性、
     *   Propagation_required 支持当前事务。如果当前没有事务。就创建一个新的事务。这是最常见的选择
     *   Propagation_Supports 支持当前事务  如果没有事务,就以非事务方式执行
     *   Propagation_Requres_new 新建事务。如果当前存在事务,把当前事务挂起。
     *   Propagation_Not_Supports 一以非事务方式执行操作。如果当前存在事务。就把当前事务挂起。
     *   Propagation_Never 以非事务方式执行。如果当前存在事务。则抛出异常
     *   Propagation_Nested 如果当前存在事务。则在嵌套事务内执行,如果当前没有事务。则进行与PRO Prgation_Requered类似

  • 相关阅读:
    Linux/Unix 新手和专家教程
    恢复Ext3下被删除的文件
    如何调试bash脚本
    8个实用而有趣Bash命令提示行
    使用grep恢复被删文件内容
    一些非常有意思的杂项资源
    chmod -x chmod的N种解法
    纯文本配置还是注册表
    面向对象的Shell脚本
    你可能不知道的Shell
  • 原文地址:https://www.cnblogs.com/qxlxi/p/12860984.html
Copyright © 2011-2022 走看看