首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring boot @Transactionnal重叠式不好的做法?

Spring Boot中的@Transactionnal注解用于标记一个方法或类需要进行事务管理。当一个方法被标记为@Transactionnal时,Spring会在方法执行前开启一个事务,并在方法执行后根据方法的执行结果决定是提交事务还是回滚事务。

重叠式的@Transactionnal注解是指在一个方法中嵌套使用多个@Transactionnal注解,例如在一个方法A中调用了另一个带有@Transactionnal注解的方法B。这种做法是不好的,原因如下:

  1. 性能问题:每个@Transactionnal注解都会开启一个新的事务,嵌套使用多个@Transactionnal注解会导致事务的嵌套,增加了事务管理的开销,降低了性能。
  2. 死锁风险:嵌套使用多个@Transactionnal注解可能会导致死锁的风险。当多个事务同时竞争相同的资源时,如果事务的提交和回滚顺序不当,就可能导致死锁的发生。
  3. 代码可读性差:重叠式的@Transactionnal注解会使代码变得复杂,可读性差。阅读代码时很难理解每个事务的边界和作用。

为了避免重叠式的@Transactionnal注解带来的问题,可以采取以下做法:

  1. 尽量避免在一个方法中嵌套使用多个@Transactionnal注解,尽量将事务的边界划分清楚,使每个方法只负责一个事务。
  2. 如果确实需要在一个方法中调用另一个带有@Transactionnal注解的方法,可以考虑将被调用的方法提取为一个独立的服务方法,并在该方法上添加@Transactionnal注解,然后在调用方法中调用该服务方法。
  3. 合理设计事务的传播行为,使用适当的事务传播属性来控制事务的边界和作用范围。

总之,重叠式的@Transactionnal注解是一种不好的做法,会带来性能问题、死锁风险和代码可读性差等问题。在使用@Transactionnal注解时,应该避免重叠式的使用,合理划分事务的边界,提高代码的可读性和性能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Spring Boot(五):Spring Boot Jpa 使用

在上篇文章《Spring Boot(二):Web 综合开发》中简单介绍了一下 Spring Boot Jpa 基础性使用,这篇文章将更加全面的介绍 Spring Boot Jpa 常见用法以及注意事项...使用 Spring Boot Jpa 开发时,发现国内对 Spring Boot Jpa 全面介绍文章比较少案例也比较零碎,因此写文章总结一下。...本人也正在翻译Spring Data JPA 参考指南,有兴趣同学欢迎联系我,一起加入翻译中! Spring Boot Jpa 介绍 首先了解 Jpa 是什么?...Spring Boot Jpa Spring Boot Jpa 是 Spring 基于 ORM 框架、Jpa 规范基础上封装一套 Jpa 应用框架,可使开发者用极简代码即可实现对数据访问和操作。.../spring-boot-examples/tree/master/spring-boot-jpa 文章内容已经升级到 Spring Boot 2.x 点击阅读原文,查看 Spring Boot 系列文章

2.7K10

Spring Boot 应用测试Spring Boot 应用测试

Spring Boot 应用测试 《Spring Boot 实战开发》(陈光剑) —— 基于 Gradle + Kotlin企业级应用开发最佳实践 本书写到这里,Spring Boot 2.0.0...这是本书最后一章,本章介绍 Spring Boot 应用测试(质量保障)相关内容。我们在项目开发中使用分层架构,在测试中也进行分层测试。...1.1 准备工作 本节先来创建一个基于Spring MVC、 Spring Data JPA Spring Boot, 完成Dao 层、 Service 层、Controller 层代码编写,为后面的测试代码编写做准备...我们将得到一个初始Spring Boot 工程。详细代码参考本章给出示例工程源码。 下面我们来详细讲解怎样针对 Spring Boot 项目进行分层测试。...Spring Boot 提供spring-boot-test 模块基于 spring-test 模块和junit 框架,封装集成了功能强大结果匹配校验器assertj 、hamcrest Matcher

1.5K30

Spring Boot监控

Spring Boot是一款非常流行Java框架,它可以快速开发基于Spring应用程序。监控是应用程序运行重要组成部分,它可以帮助我们了解应用程序状态,识别性能瓶颈,并快速解决问题。...Spring Boot提供了一些内置监控工具,本文将介绍Spring Boot监控详细文档,并给出一些示例。...一、监控指标 Spring Boot提供了以下监控指标: HTTP请求指标:HTTP请求数、响应时间、错误率等。 JVM指标:内存使用量、垃圾收集频率、线程数量等。...二、监控工具 Spring Boot提供了一些内置监控工具,包括: Spring Boot Actuator:Actuator是Spring Boot一个模块,提供了一些REST端点,我们可以通过这些端点来获取应用程序各种指标信息...三、Spring Boot Actuator Spring Boot Actuator提供了一些REST端点,可以用于获取应用程序各种指标信息。

1.5K50

深入Spring Boot (二):Spring Boot对构建系统支持

Spring Boot强烈建议开发者在使用Spring Boot时候选择支持依赖管理构建系统,以获取更好使用支持,比如Maven或Gradle。...因为Maven和Gradle实现不同,所以Spring Boot对它们使用支持也不同。...Maven 每次Spring Boot新版本发布时都会提供一个它所支持Spring模块及第三方库版本列表,例如Spring Boot1.5.10版本支持库列表可以在https://github.com...因为Spring Boot每次版本发布都会关联一个Spring基础版本,所以官方强烈不建议自己指定Spring库版本。...但是,Spring Boot提供spring-boot插件也提供了依赖管理能力,它允许你省略Spring Boot管理任何依赖version版本号,例如如下配置。

968100

spring boot框架学习6-spring bootweb开发(2)

怎么自定义spring mvc配置呢?这些我们在公司都需要用。这些怎么解决呢?在接下来小节详细讲解这些。...boot框架学习》中第六篇 spring boot框架学习6-spring bootweb开发(2) 声明:本文系凯哥Java(www.kaigejava.com)原创,未经允许,禁止转载!...二:自动配置静态资源 2.1:进入规则为/ 如果进入SpringMVC规则为/时,Spring Boot默认静态资源路径为: spring.resources.static-locations=classpath...本系列其他文章: spring boot框架学习学前掌握之重要注解(1)-springjava配置方式 spring boot框架学习学前掌握之重要注解(2)-通过java配置方式进行配置spring...框架学习5-spring bootweb开发(1) spring boot框架学习6-spring bootweb开发(2) 本文出处:http://www.kaigejava.com/article

50230

Spring Boot devtool使用

Spring Boot devtool使用 Spring Boot为我们提供了一个便捷开发Spring Boot应用程序环境,同时为了方便我们开发Spring Boot应用程序,Spring Boot...推出了Spring Boot devtool工具来方便我们更加快速开发和测试Spring Boot应用程序。...我们将会从下面几个方面来详细讲解Spring Boot devtool功能。...默认属性 Spring Boot为我们提供了很多自动配置来提高我们开发效率,比如会缓存模板引擎例如thymeleaf, 但是如果我们在开发过程汇中可能需要快速看到修改结果,这个时候我们就不需要这个缓存配置了...全局配置 spring-boot-devtools 提供了一个全局配置文件,方便你开发环境配置,该文件在$HOME 目录下面的 .spring-boot-devtools.properties 。

88520

优化你Spring Boot

介绍 在SpringBootWeb项目中,默认采用是内置Tomcat,当然也可以配置支持内置jetty,内置有什么好处呢? 方便微服务部署。...,初始线程数保障启动时候,如果有大量用户访问,能够很稳定接受请求。...而最大线程数量用来保证系统稳定性,而超时时间用来保障连接数不容易被压垮,如果大批量请求过来,延迟比较高,不容易把线程打满。...jvm优化一般来说没有太多场景,无非就是加大初始堆,和最大限制堆,当然也不是无限增大,根据情况进快速开始 在spring boot配置文件中application.yml,添加以下配置 server...在【1】中填入Remote项目名称,在【2】中填IP地址和端口号,在【3】选择远程调试项目module,配置完成后点击OK即可 如果碰到连接超时情况,很有可能服务器防火墙问题,举例CentOs7

86431

Spring Boot自动配置

随着Spring家族中新星Spring Boot诞生,这些问题都在逐渐被解决。 个人觉得Spring Boot中最重要两个优势就是可以使用starter简化依赖配置和Spring自动配置。...Spring自动配置 Spring Boot会根据类路径中jar包、类,为jar包里类自动配置,这样可以极大减少配置数量。...自动配置充分利用了spring 4.0条件化配置特性,那么,Spring Boot是如何实现自动配置?...Spring 4中条件化配置又是怎么运用到Spring Boot呢?这要从Spring Boot启动类说起。...关于Spring BootSpring自动化配置主要是@EnableAutoConfiguration功劳。该注解可以让Spring Boot根据类路径中jar包依赖为当前项目进行自动配置。

1K20

Spring boot异常处理

Spring boot默认异常处理机制 我们以访问一个不存在页面的场景为例,结果是返回一个错误页面: ?...若报错回跳转到/errorURL,同一个URL不同处理方式是由Spring boot提供BasicErrorController错误控制器实现。...,当校验不通过时,spring boot会返回一个400状态码,并且并把我们所有的错误信息放进一个error里面来告诉我们客户端哪些字段有问题,问题是什么。...Error count: 1", "path": "/user/1" } 进入到服务里面抛出异常处理机制 一般如果是在我们服务里面报错误,Spring boot默认会响应给浏览器是一个状态码...浏览器访问结果是跳转到我们特定页面, ? 这种方式是安装spring boot约束来自定义,他仅能适用于浏览器请求,而对app返回任然是json。

1.1K30

Spring Boot缓存介绍

Spring Boot是一个非常流行Java Web应用程序开发框架。它支持多种缓存技术,并为开发者提供了很多缓存相关配置选项和默认设置。...在本文中,我们将讨论Spring Boot缓存机制,包括其基本概念、使用方法和示例。什么是缓存缓存是一种用于提高系统性能和可扩展性技术。...Spring Boot缓存Spring Boot提供了一个非常方便缓存抽象层,它使得开发者可以很容易地集成多种缓存技术,如Ehcache、Redis、Guava等。...Cache是一个具体缓存实例,它提供了基本缓存操作,如添加、删除和查找。Spring Boot还提供了多种缓存注解,以便开发者可以在方法级别进行缓存。...以下是Spring Boot中基本缓存配置示例:首先,需要在pom.xml中添加缓存相关依赖项,例如: org.springframework.boot

87240

spring boot框架学习5-spring bootweb开发(1)

本章节主要内容: 通过前面的学习,我们了解并快速完成了spring boot第一个应用。spring boot企业级框架,那么spring boot怎么读取静态资源?...怎么自定义spring mvc配置呢?这些我们在公司都需要用。这些怎么解决呢?在接下来小节详细讲解这些。...好了,现在开启spring bootweb开发第一节 本节主要: 1:spring boot 自动配置viewResolver 本文是《凯哥陪你学系列-框架学习之spring boot框架学习》中第五篇...spring boot框架学习5-spring bootweb开发(1) 声明:本文系凯哥Java(www.kaigejava.com)原创,未经允许,禁止转载!...一:spring boot自动配置viewResolver讲解 1.1:spring boot所有自动配置在哪个包下? 所有的配置都在spring-boot-autoconfigure这个包下。

42120

Spring boot文件上传

前言 文件上传功能,基本上在所有的企业级应用都会有,那么在一个前后端分离架构中,文件上传功能又是如何去实现呢。...一般前端采用是单页面应用,不会发生刷新和表单提交,大部分都是异步完成,他提交文件时候,只是提交一个文件路径上来。...,第一个参数指定上传时参数name,第二个参数指定上传文件名字,第三个参数指定enctype类型,第四个参数就是上传文件。...,以上是我们代码方便,而在我们实际开发中,通常把文件存在到云服务上面,如阿里云、青牛云。...try括号里面,他会在代码运行结束,自动帮我们关闭流,这是jdk1.7特性。

78410

Spring Boot核心原理

Spring两大核心思想是IOC和AOP,而Spring BootSpring基础上进行了自动配置。本章我们就一起来剖析这些特性内在原理。...依赖查找 依赖查找会主动获取,在需要时候通过调用框架提供方法来获取对象,并且在获取时需要提供相关配置文件路径、key等信息来确定获取对象状态。EJB就是使用依赖查找实现控制反转。...依赖查找建立在Java EEJNDI规范之上,但随着EJB衰落,其实现方式也慢慢无人问津。 依赖注入 依赖注入是控制反转最常见实现方式,这在很大程度上得益于Spring在Java领域垄断地位。...在Spring中使用依赖注入可以通过如下4种方式: · 基于接口 · 基于Set方法 · 基于构造函数 · 基于注解 由于注解方便、好用,目前几乎所有系统都使用注解方式来完成依赖注入。...首先使用@Controller、@Service、@Component等注解将类声明为Spring Bean,然后使用@Autowire注解注入依赖对象。

66620

Spring Boot Admin使用

准备 spring-boot-adminGithub地址在:https://github.com/codecentric/spring-boot-admin,它在Spring Boot Actuator...在文章Spring Boot应用健康监控中,我们曾定制自己Health Indicator,用来监控四个数据库接口健康状态,这次我将利用spring-boot-admin对这些信息进行可视化管理。...BookPub应用详细信息 分析 Spring Boot Admin就是将Spring Boot Actuator中提供endpoint信息可视化表示,在BookPub应用(被监控)这一端...spring-boot-admin-starter-client,作为客户端,用于与Spring Boot Admin Web服务器沟通; spring.boot.admin.url=http:localhost...通过Spring Boot Admin修改日志级别 Spring Boot提供度量工具功能强大且具备良好扩展性,除了我们配置DbCountMetrics,还监控BookPub应用其他信息,例如内存消耗

1.8K20
领券