Spring之事务

当我们在某个方法上加了@Transactional注解后,就表示该方法在调用时会开启Spring事务,而这个方法所在的类所对应的Bean对象会是该类的代理对象。


Spring事务的代理对象执行某个方法时的步骤:

java 复制代码
1. 判断当前执行的方法是否存在@Transactional注解
2. 如果存在,则利用事务管理器(TransactionMananger)新建一个数据库连接
3. 修改数据库连接的autocommit为false
4. 执行target.test(),执行程序员所写的业务逻辑代码,也就是执行sql
5. 执行完了之后如果没有出现异常,则提交,否则回滚

Spring事务是否会失效的判断标准:某个加了@Transactional注解的方法被调用时,要判

断到底是不是直接被代理对象调用的,如果是则事务会生效,如果不是则失效。

相关推荐
fanruitian2 分钟前
Springboot项目父子工程
java·数据库·spring boot
柒.梧.9 分钟前
Spring核心知识全解析:从入门实战到进阶
java·后端·spring
全栈独立开发者19 分钟前
点餐系统装上了“DeepSeek大脑”:基于 Spring AI + PgVector 的 RAG 落地指南
java·人工智能·spring
super_lzb26 分钟前
mybatis拦截器ParameterHandler详解
java·数据库·spring boot·spring·mybatis
CV工程师的自我修养32 分钟前
数据库出现死锁了。还不知道什么原因引起的?快来看看吧!
数据库
我是Superman丶38 分钟前
【异常】Spring Ai Alibaba 流式输出卡住无响应的问题
java·后端·spring
码界奇点1 小时前
灵活性与高性能兼得KingbaseES 对 JSON 数据的全面支持深度解析
数据库·json·es
2501_941871451 小时前
面向微服务链路追踪与全局上下文管理的互联网系统可观测性设计与多语言工程实践分享
大数据·数据库·python
2501_941800881 小时前
从服务注册发现到动态调度的互联网工程语法实践与多语言探索
spring
·云扬·1 小时前
MySQL单机多实例部署两种实用方法详解
数据库·mysql·adb