首页 > 其他分享 >Spring事务原理、Spring事务传播机制

Spring事务原理、Spring事务传播机制

时间:2024-07-17 11:54:11浏览次数:15  
标签:BeanPostProcessor 事务 Spring Transactional 原理 执行 public

Spring的@EnableTransactionManagement 和@Transactional原理

@Configuration  
@EnableTransactionManagement  
public class AppConfig {  
    // 配置类内容  
}
@Service  
public class MyService {  
  
    @Transactional  
    public void processPayment(Payment payment) {  
        // 这里是业务逻辑  
    }  
}

@EnableTransactionManagement 会像spring容器中注入一个InfrastructureAdvisorAutoProxyCreator,这是一个BeanPostProcessor,我前文中有说到BeanPostProcessor是一个初始化后会执行的接口。所以bean实例化、依赖注入、初始化、然后会进行初始化后的步骤,即走BeanPostProcessor的实现,实现中是aop的内容。会去看这个bean是否是advisor切面,找是否有@Transactional,如果有,那就创建代理对象,这就是aop的实现。

spring事务执行流程:

大致就是:连接数据库、autocommit为false、执行sql、提交事务

具体是:代理对象在执行某个方法时,会再次判断当前执行的方法是否和
BeanFactoryTransactionAttributeSourceAdvisor匹配,如果匹配则执行该Advisor中的
TransactionInterceptor的invoke()方法,执行基本流程为:
1. 利用所配置的PlatformTransactionManager事务管理器新建一个数据库连接
2. 修改数据库连接的autocommit为false
3. 执行MethodInvocation.proceed()方法,简单理解就是执行业务方法,其中就会执行sql
4. 如果没有抛异常,则提交
5. 如果抛了异常,则回滚

 

Spring事务传播机制

required是默认的19b7f02806e14a839536178fb899558c.png

 

标签:BeanPostProcessor,事务,Spring,Transactional,原理,执行,public
From: https://blog.csdn.net/Y_Tinty/article/details/140484916

相关文章

  • 面试官:为什么SpringBoot的 jar 可以直接运行?
    引言传统Java应用部署:需要将应用打包成WAR文件,部署到如ApacheTomcat、Jetty等Web容器中。SpringBoot:改变了Java应用的开发体验,应用可以打包成可直接运行的jar文件,无需外部容器。SpringBootJAR包基础概念FatJAR(胖Jar):包含应用程序所需的全部依赖库和应用程序自身的......
  • Java面试 (5) :SSM(Spring框架、Spring MVC、MyBatis…)
    Java面试——SSM基础知识:Spring框架、SpringMVC、MyBatis…文章目录1String框架1.1IOC和DI1.2Bean1.2.1作用域1.2.2自动装配模式1.2.3生命周期1.2.3.1doGetBean()源码1.2.3.2七个阶段详解1.2.4Bean线程安全1.3常用的Spring注解1.4事务1.4.1Spring事务......
  • Docker通信全视角:原理、实践与技术洞察
    本文全面深入地探讨了Docker容器通信技术,从基础概念、网络模型、核心组件到实战应用。详细介绍了不同网络模式及其实现,提供了容器通信的技术细节和实用案例,旨在为专业从业者提供深入的技术洞见和实际操作指南。关注【TechLeadCloud】,分享互联网架构、云服务技术的全维度知识。......
  • 基于ssm的springboot摄影约拍系统的设计实现(源码+LW+部署讲解)
    前言......
  • Pytorch的编译新特性TorchDynamo的工作原理和使用示例
    在深度学习中,优化模型性能至关重要,特别是对于需要快速执行和实时推断的应用。而PyTorch在平衡动态图执行与高性能方面常常面临挑战。传统的PyTorch优化技术在处理动态计算图时效果有限,导致训练时间延长和模型性能不佳。TorchDynamo是一种为PyTorch设计的即时(JIT)编译器,通过在运行时......
  • 表格集算表高性能原理:揭秘纯前端百万行数据秒级响应的魔法
    最新技术资源(建议收藏)https://www.grapecity.com.cn/resources/集算表(TableSheet)是一个具备高性能渲染、数据绑定功能、公式计算能力的数据表格,通过全新构建的关系型数据管理器结合结构化公式,在高性能表格的基础上提供排序、筛选、样式、行列冻结、自动更新、单元格更新等功......
  • Spring Boot+Redis 分布式锁:模拟抢单
    如何删除锁模拟抢单动作(10w个⼈开抢)jedis的nx⽣成锁对于java中想操作redis,好的⽅式是使⽤jedis,⾸先pom中引⼊依赖:<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId></dependency>对于分布式锁的⽣成通常......
  • 基于web的人力资源管理系统 毕业设计 springboot+Vue+mysql
    介绍在当今企业管理中,人力资源的有效管理对于组织的发展至关重要。为了提高人力资源管理的效率和准确性,我们开发了这个基于Web的人力资源管理系统。该系统旨在为企业提供一个全面、便捷、高效的人力资源管理平台,满足企业对人力资源规划、招聘、培训、绩效管理等方面的需求。......
  • 基于springboot的社区智慧养老监护管理平台 毕业设计 springboot+Vue+mysql
    介绍随着人口老龄化的加剧,养老服务的需求日益增长,传统的养老模式已经难以满足现代社会的需求。为了提供更高效、便捷、个性化的养老服务,我们开发了这个基于SpringBoot的社区智慧养老监护管理平台。该平台旨在整合社区养老资源,实现对老年人的全面监护和管理,提升养老服务的质......
  • 基于springboot的教师工作量管理系统 毕业设计 springboot+Vue+mysql
    介绍在教育领域,对教师工作量的准确评估和有效管理对于保障教学质量、合理分配资源以及激励教师积极性具有至关重要的意义。然而,传统的教师工作量管理方式往往依赖于手工记录和繁琐的统计,容易出现误差、效率低下且缺乏透明度。本基于SpringBoot的教师工作量管理系统旨在为......