首页 > 其他分享 >Spring事务使用注意事项

Spring事务使用注意事项

时间:2023-03-03 16:55:39浏览次数:44  
标签:事务 Spring 回滚 方法 线程 注意事项 异常

Spring提供的事务使用起来很方便,一个@Transactional注解就搞定全部,但是如果不注意,也会踩坑

提到事务就应该想到至少以下几点:

1、在事务方法中加锁,可能会导致锁失效

无论是JVM自带的锁,还是分布式锁,都有可能出现没锁住的情况

原因是解锁先于事务提交,一旦锁释放后其它线程就可以获取到锁了,由于事务还没提交,所以新线程读到的还是旧数据(跟前一个线程读取到的数据是一样的),这就相当于多个线程做了一模一样的事情了。

正确的做法是:要么别加事务,要么把锁加在事务方法外面

2、调用内部(同一个类中)方法的话,事务不会生效

3、事务方法被声明成private或者final,导致事务不生效

4、声明回滚的异常类型与抛出的异常不一致,或者异常被吞掉了。

(PS:默认捕获到RuntimeException和Error类型的异常才会回滚)

 

标签:事务,Spring,回滚,方法,线程,注意事项,异常
From: https://www.cnblogs.com/cjsblog/p/17176250.html

相关文章

  • SpringMVC:如何获取到请求携带的参数?
    使用springMVC进行获取请求参数,很便捷。  一、获取基本数据类型参数自动匹配请求中name与响应方法中参数的属性名一致的参数,自动完成类型转换和赋值。例子:......
  • 事务
    事务事务:由单独单元的一个或多个SQL语句组成,在这个单元中,每个SQL语句是相互依赖的。如果单元中某条SQL语句执行失败或产生错误,整个单元将会回滚,所有数据回到事务开始以......
  • Spring MVC 配置类 WebMvcConfigurerAdapter
    WebMvcConfigurerAdapter配置类是spring提供的一种配置方式,采用JavaBean的方式替代传统的基于xml的配置来对spring框架进行自定义的配置。因此,在springboot提倡的基于注解......
  • springboot 过滤器FilterRegistrationBean详解
    一:基础知识1.通过FilterRegistrationBean实例注册,该方法能够设置过滤器之间的优先级2.为了演示优先级,这里创建2个测试过滤器类:Test1Filter、Test2Filter通过实现javax.serv......
  • Springboot Controller接口默认自动填充 业务实体参数值
    前言今天看有小伙伴求救: 我还是一贯如此,有人不明白,没玩过HandlerMethodArgumentResolver。那么很可能不止他一个人,那么我就有必要出手。不多说,开搞。 正文快速模拟出......
  • 有关事务
    事务简介 事务在逻辑上是一组操作,要么执行,要不都不执行。主要是针对数据库而言的,比如说MySQL。为了保证事务是正确可靠的,在数据库进行写入或者更新操作时,就必须得表现......
  • SpringMVC_核心组件
    基础的四个组件。  一、DisapatcherServlet前端控制器,接受所有的请求。(配置为/则为所有不包括jsp的请求。/*则为所有请求)配置:在web.xml中配置一个前端控......
  • SpringMVC_编码过滤器
    通过过滤器统一请求与响应的编码格式:<!--字符编码过滤器--><filter><filter-name>encoding</filter-name><filter-class>org.springframewor......
  • spring boot 拦截器
    在interceptor包下创建ApiInterceptor和WebConfigApiInterceptor  ```packagecom.media.weappapi.interceptor;importcom.media.common.po.config.TCmsSite;imp......
  • 18_Spring_事务管理注解方式
    ​ 事务的管理应该放在我们的service层进行处理spring中有两种事务的管理方式1编程式事务管理(了解) 2声明式事务管理(掌握)    基于注解方式实现(掌握)......