Spring事务使用注意事项
2023-09-11 14:14:40 时间
Spring提供的事务使用起来很方便,一个@Transactional注解就搞定全部,但是如果不注意,也会踩坑
提到事务就应该想到至少以下几点:
1、在事务方法中加锁,可能会导致锁失效
无论是Java自带的锁,还是分布式锁,都有可能出现没锁住的情况
原因是解锁先于事务提交,一旦锁释放后其它线程就可以获取到锁了,由于事务还没提交,所以新线程读到的还是旧数据(跟前一个线程读取到的数据是一样的),这就相当于多个线程做了一模一样的事情了。
正确的做法是:要么别加事务,要么把锁加在事务方法外面
2、调用内部(同一个类中)方法的话,事务不会生效
3、事务方法被声明成private或者final,导致事务不生效
4、声明回滚的异常类型与抛出的异常不一致,或者异常被吞掉了。
(PS:默认捕获到RuntimeException和Error类型的异常才会回滚)
相关文章
- Spring的核心机制:依赖注入(xml方式)
- Spring可扩展Schema标签
- 深入实践Spring Boot3.4 视图设计
- Is Spring Integration 5.5.10 must be based on Java 9 to use or depend on spring integration? #3761
- 面试反馈 Spring Cloud 的25连环炮
- 第65节:Java后端的学习之Spring基础
- 从源码分析 Spring 基于注解的事务
- Spring Data JPA 和MyBatis比较
- spring计划任务,springMvc计划任务,Spring@Scheduled,spring定时任务
- spring mvc -- HttpMessageConverter、DispatcherServlet、Validator---@RequestBody @respondBody
- 数据库事务的隔离以及spring的事务传播机制
- 在应用层通过spring特性解决数据库读写分离
- Spring AOP声明式事务异常回滚
- spring框架漏洞整理(Spring Boot Actuator命令执行漏洞)
- Spring Security 5.7 最新配置细节(直接就能用),WebSecurityConfigurerAdapter标横线 已废弃
- Spring 源码分析-循环依赖
- 【转】Spring学习---为什么要用spring,springMVC
- Spring 事务(编程式事务、声明式事务@Transactional、事务隔离级别、事务传播机制)
- 【spring框架】通过XML配置事务(Transaction)
- 玩转spring boot——war部署
- Spring Cloud Netflix Eureka client源码分析
- Diagram of Spring 3.0 module dependencies--转载
- 曹工说Spring Boot源码系列开讲了(1)-- Bean Definition到底是什么,附spring思维导图分享