SpringBoot 开启事务Spring事务常用

简介: SpringBoot 开启事务Spring事务常用
 
//启动类上
@MapperScan(basePackages = "com.xx.mapper.*")
@SpringBootApplication
@EnableScheduling
@EnableTransactionManagement  //注解生效就加
public class SysWebApplication extends SpringBootServletInitializer
 
 
//常用的CRUD
------------------------- 添加修改删除 -----------------------------
@RequestMapping(value = "/save", method = RequestMethod.POST )
@Log("查看系统日志列表")
@Transactional(propagation = Propagation.REQUIRED)
public ResultBean save(){
        demoMapper.insert(new Demo(11L,"1"));
        demoMapper.insert(new Demo(12L,"1"));
        demoMapper.insert(new Demo(13L,"1"));
        return ResultBean.ok();
        }
 
        ------------------------- 查询 -----------------------------
@Transactional(propagation = Propagation.SUPPORTS)
@RequestMapping(value = "/list", method = RequestMethod.GET )
@Log("查看系统日志列表")
public ResultBean get(HttpServletRequest request, HttpServletResponse response) throws IOException {
 
        List all = demoService.seleDemo();
 
        try{
 
            return ResultBean.ok(all);
        }catch (Exception e){
        e.printStackTrace();
        }
 
        return null;
        }
        传播行为
 
        所谓事务的传播行为是指,如果在开始当前事务之前,一个事务上下文已经存在,此时有若干选项可以指定一个事务性方法的执行行为。
        我们可以看 org.springframework.transaction.annotation.Propagation 枚举类中定义了6个表示传播行为的枚举值:
 
public enum Propagation {
    REQUIRED(0),
    SUPPORTS(1),
    MANDATORY(2),
    REQUIRES_NEW(3),
    NOT_SUPPORTED(4),
    NEVER(5),
    NESTED(6);
}
 
REQUIRED :如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。
        SUPPORTS :如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式继续运行。
        MANDATORY :如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。
        REQUIRES_NEW :创建一个新的事务,如果当前存在事务,则把当前事务挂起。
        NOT_SUPPORTED :以非事务方式运行,如果当前存在事务,则把当前事务挂起。
        NEVER :以非事务方式运行,如果当前存在事务,则抛出异常。
        NESTED :如果当前存在事务,则创建一个事务作为当前事务的嵌套事务来运行;如果当前没有事务,则该取值等价于 REQUIRED 。
 
        指定方法:通过使用 propagation 属性设置,例如:
 
@Transactional(propagation = Propagation.REQUIRED)


相关文章
|
14天前
|
Java 开发者 Spring
Spring高手之路24——事务类型及传播行为实战指南
本篇文章深入探讨了Spring中的事务管理,特别是事务传播行为(如REQUIRES_NEW和NESTED)的应用与区别。通过详实的示例和优化的时序图,全面解析如何在实际项目中使用这些高级事务控制技巧,以提升开发者的Spring事务管理能力。
28 1
Spring高手之路24——事务类型及传播行为实战指南
|
7天前
|
XML Java 数据库连接
Spring中的事务是如何实现的
Spring中的事务管理机制通过一系列强大的功能和灵活的配置选项,为开发者提供了高效且可靠的事务处理手段。无论是通过注解还是AOP配置,Spring都能轻松实现复杂的事务管理需求。掌握这些工具和最佳实践,能
14 3
|
1月前
|
Java 测试技术 开发者
springboot学习四:Spring Boot profile多环境配置、devtools热部署
这篇文章主要介绍了如何在Spring Boot中进行多环境配置以及如何整合DevTools实现热部署,以提高开发效率。
61 2
|
1月前
|
前端开发 Java 程序员
springboot 学习十五:Spring Boot 优雅的集成Swagger2、Knife4j
这篇文章是关于如何在Spring Boot项目中集成Swagger2和Knife4j来生成和美化API接口文档的详细教程。
92 1
|
1月前
|
Java API Spring
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中拦截器的入门教程和实战项目场景实现的详细指南。
26 0
springboot学习七:Spring Boot2.x 拦截器基础入门&实战项目场景实现
|
1月前
|
Java API Spring
springboot学习六:Spring Boot2.x 过滤器基础入门&实战项目场景实现
这篇文章是关于Spring Boot 2.x中过滤器的基础知识和实战项目应用的教程。
24 0
springboot学习六:Spring Boot2.x 过滤器基础入门&实战项目场景实现
|
1月前
|
Java 测试技术 Spring
springboot学习三:Spring Boot 配置文件语法、静态工具类读取配置文件、静态工具类读取配置文件
这篇文章介绍了Spring Boot中配置文件的语法、如何读取配置文件以及如何通过静态工具类读取配置文件。
49 0
springboot学习三:Spring Boot 配置文件语法、静态工具类读取配置文件、静态工具类读取配置文件
|
1月前
|
SQL Java 数据库
Springboot+spring-boot-starter-data-jdbc实现数据库的操作
本文介绍了如何使用Spring Boot的spring-boot-starter-data-jdbc依赖来操作数据库,包括添加依赖、配置数据库信息和编写基于JdbcTemplate的数据访问代码。
57 2
|
1月前
|
XML Java 应用服务中间件
【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错
【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错
168 2
|
1月前
|
前端开发 安全 Java
【Spring】Spring Boot项目创建和目录介绍
【Spring】Spring Boot项目创建和目录介绍
84 2