Spring注解(事务)

Spring 事务详解(注解方式) 事务指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部不成功,只有这两种情况。@Transactional注解 可以作用于接口、接口方法、类以及类方法上。当作用于类上时,该类的所有 public 方法将都具有该类型的事务属性,同时,我们也可以在方法级别使用该标注来覆盖类级别的定义。虽然@Transactional 注解可以作用于接口、接口方法、类以及类方法上,但是 Spring 建议不要在接口或者接口方法上使用该注解,因为这只有在使用基于接口的代理时它才会生效。 阅读详情

Spring注解(事务)

spring操作数据库 jdbc

<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.1.5.RELEASE</version>
</dependency>

这个简化数据库操作 及其事务控制

 

maven依赖就导入了 jdbc 和 tx

 

如果用mybatis,则还需要导入orm模块,做事务控制时候,orm模块支持各种版本的mybatis

 

配置数据源和jdbcTemplate(Spring 提供简化数据库操作的工具)

xml中:

 <tx: annnotation-driven/>

 

  config:

@EnableTransactionManagement
@ComponentScan(value="com.toov5")    
@Configuration
public class TxConfig {
    
  @Bean
   public ComboPooledDataSource dataSource() throws PropertyVetoException {
       ComboPooledDataSource dataSource = new ComboPooledDataSource();
       dataSource.setUser("root");
       dataSource.setPassword("12345");
       dataSource.setDriverClass("com.mysql.jdbc.Driver");
       dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test");
       
       return dataSource;
   }
  
  @Bean
  public JdbcTemplate jdbcTemplate() throws PropertyVetoException {
      // Spring 对 @Configuration列特殊处理; 给容器加组件方法,多次调用都是从容器中找组件
      JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource()); //调用 dataSource() 方法
      return jdbcTemplate;
  }
  
  //事务管理器 管理数据源   事务开始 回滚之类的都是有事务管理器来做
  @Bean  //注册事务管理器在容器中
  public PlatformTransactionManager transactionManager() throws PropertyVetoException {
      return new DataSourceTransactionManager(dataSource());
  }
  
}

 

(套路都是 @EnableXXX)

service:

 

@Service
public class BookService {
    
    @Autowired
    private BookDao bookDao;
    
    @Transactional
    public void insertUser() {
          bookDao.insertUser();
    }
}

 

步骤:

 1、开启事务管理功能

 2、@Transactional 标注到方法

 3、配置事务管理器到容器

 

看下源码:

 

 大家可以按照这个思路点击或者debug调试查看:

  1  @EnableTransactionManagement 

                利用 TransactionManagementConfigurationSelector 给容器中导入两个组件:

                     AutoProxyRegisrar       

                     ProxyTransactionManagementConfiguration

2 AutoProxyRegistrar

       给容器注册一个 InfrastructureAdvisorAutoProxyCreator组件

       InfrastructureAdvisorAutoProxyCreator 利用后置处理器机制在对象创建以后,包装对象,返回一个代理对象(增强器) 代理对象执行方法利用拦截器链进行调用

3  ProxyTransactionManagementConfiguration   给容器注册事务增强器 

    1 给容器中注册事务增强器

         事务增强器要用事务注解的信息  AnnotationTransactionAttributeSource 解析事务注解

          事务拦截器 TransactionInterceptor 保存了事务属性信息 、事务管理器 

          是个MethodInterceptor 方法拦截器

          在目标方法执行的时候 执行拦截器链 : 先获取事务相关的属性  再获取PlantformTransactionManager 平台的事务管理器。如果没有实现添加任何TransactionManager, 则最终会从容器中按照类型

           获取一个PlantformTransactionManager

          执行目标方法,如果异常,获取事务管理器,利用事务管理器 回滚操作。 如果正常利用事务管理器提交事务。                 

       

posted @ 2019-04-10 00:45 toov5 阅读(...) 评论(...) 编辑 收藏

手写spring事务注解 微信公众号:用心程序员 介绍 手写spring事务注解,意思是自定义**@ExtTransactional注解,实现类似spring自带注解@Transactional**一样的功能 一、Java自定义注解 注解是Jdk1.5新增新技术。很多框架为了简化代码,都会提供一些注解。注解可以理解为插件,是代码级别的插件,不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。 ###Java提供了三... 阅读详情

相关推荐

Spring事务核心:声明式事务&注解式事务

在Spring中,事务管理是一个非常重要的特性,它可以帮助开发者在应用程序中实现事务控制。Spring提供了两种事务管理方式:声明式事务和注解事务。

five-five 1743

Spring——事务注解@Transactional【建议收藏】

在某些业务场景下,如果一个请求中,需要同时写入多张表的数据或者执行多条sql,为了保证操作的原子性(要么同时成功,要么同时失败),避免数据不一致的情况,我们一般都会用到事务;Spring框架下,我们经常会使用@Transactional注解来管理事务; 本篇介绍Spring的事务注解@Transactional相关的知识,包括事务简介、事务隔离级别、Spring声明式事务实现原理、事务的传播行为、@Transactional的用法及注意事项等,属于Spring的常用注解之一,需要掌握相关知识点;...

娜娜米的博客 4万+

Mplus实战:如何用交叉滞后面板模型(CLPM)分析心理学纵向数据?

本文提供了在Mplus软件中应用交叉滞后面板模型(CLPM)分析心理学纵向数据的实战指南。文章详细拆解了CLPM的核心概念、Mplus语法框架,并涵盖从基础的两变量模型到多变量、潜变量建模的扩展,以及结果解读与常见陷阱规避,旨在帮助研究者利用这一经典工具有效探索变量间的动态预测关系。

weixin_29253711的博客 405

Spring事务注解

spring注解事务特性介绍,失效场景总结

严文文 Chris 8969

从BSCAN到BAP:深度解析Tessent MBIST逻辑的协同工作机制与设计考量

本文深入解析了Tessent MBIST逻辑中BSCAN Interface、Logic Group Def、Controller与BAP模块的协同工作机制。文章以一条测试指令的完整路径为例,详细阐述了数据流与控制流如何跨模块、跨时钟域协同工作,并重点探讨了MBIST BAP在协议转换与流量管理中的核心桥梁作用,为芯片内建自测试的集成与调试提供了关键的设计考量和实战技巧。

kappa的博客 482

第10章:位同步与Gardner环路(1)

第10章(1)内容如下:一、位同步与载波同步的区别1、采样时钟相位偏差的影响2、采样时钟频率偏差的影响二、Gardner环路算法与插值方法1、插值滤波器2、Gardner误差检查算法三、Gardner环路中环路滤波器与数字振荡器设计1、环路滤波器2、数控振荡器(NCO)四、Gardner环路的可运行MATLAB代码五、参考资料六、致谢 最近搞懂了Gardner环路的一些知识,于是更新第10章——位同步。 如果你稍不留意的话,这可能是你在网上能看到的介绍Gardner环路及其MATLAB仿真最详细的一篇文章了

weixin_44283855的博客 1万+

Spring事务及其注解

1.如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP,但 可以强制使用CGLIB实现AOP。2.如果目标对象没有实现接口,必须采用CGLIB库,spring会自动在JDK动态代理和CGLIB之间转换。

xunmengyinjia的博客 2879

说说PSTN、ISDN、 ADSL三种互联网接入方式的区别。

互联网的接入方式: 电话拨号接入(PSTN) ISDN接入 ADSL接入 Cable MODEM接入 局域网接入 光纤接入(FDDI) 卫星接入 DDN专线 目前来说,ADSL和Cable MODEM比较常用,今天我们就先来说说PSTN、ISDN和ADSL的区别。 电话拨号接入(PSTN/POTS,Public Switched Telephone Network / Public Oold Telephone Service) 数据终端设备(DTE)通过数据通信设备(DCE)再连

Winyaz的博客 2万+

【Spring05】事务注解的使用和原理

事务的ACID特性、事务的四种隔离级别、事务的7中传播行为及Spring的事务使用和实现的源码解析。

秦柯的博客 2955

【学习笔记-QGIS】 QGIS从零快速上手

安装文章参考:https://zhuanlan.zhihu.com/p/370633306。

Xcong_Zhu的博客 1万+

YOLOv10改进策略【注意力机制篇】| 2024 蒙特卡罗注意力(MCAttn)模块,提高小目标的关注度

本文记录的是基于蒙特卡罗注意力(MCAttn)模块的YOLOv10目标检测改进方法研究。利用提高的跨尺度特征提取能力,使模型能够更好地传递和融合提取的多尺度特征,提高对小目标的关注度。Exploiting Scale-Variant Attention for Segmenting Small Medical Objects使用一种基于随机采样的池化操作来生成尺度无关的注意力图。它从三个不同尺度(3×33×33×3、2×22×22×2和1×11×11×1,即池化张量)中随机选择一个1×11×11×1注意力图

Limiiiing的博客 2187

Spring是如何管理事务的之@Transactional注解详解

如果想要方法 1 和方法 2 均单独保持事务一致性怎么办呢,刚说过了,如果不是用代理调用 @Transactional 注解是不生效的,所以一定要使用代理调用实现,然后让方法 1 和方法 2 分别单独开启新的事务,便 OK 啦。第一点要注意的就是在 @Transactional 注解的方法中,再调用本类中的其他方法 method2 时,那么 method2 方法上的 @Transactional 注解是不!答案是结果和上面是一致的。通过代理对象在目标对象前后进行方法增强,也就是事务的开启提交和回滚。

weixin_43439425的博客 2427

ADES1831和ADBMS6830

1、上电默认进入STANDBY模式,SPI发送0xFF也可以进入STANDBY模式2、看门狗定时器超时后,进入SLEEP状态3、配置寄存器中的REFON位使用WRCFGA命令将组A设置为1进入REFUP状态,此状态比待机状态更快地启动ADC转换。i<TOTAL_IC;i++)注意:读AFE数据时会随着AFE片数增加而增加,原因是唤醒时间和AFE片数密切相关,如果需要缩短时间,那么减少唤醒频次。

m0_61973119的博客 266

spring 的事务注解

知识点: 1.同一个类的(没有@Transactional注解)A方法调用B方法,(有@Transactional注解)B方法的事务无效。 2.A类的B方法调用C类的D方法,那么D方法的事务是有效的。(这里的B方法没有注解,D方法有注解) 解决注解失效的方法: @Transactional注解可以作用于哪些地方? @Transactional 可以作用在接口、类、类方法。 作用于类:当把@Transactional 注解放在类上时,表示所有该类的public方法都配置相同的事务属性信息。 作用

范文聪 2208

Claude Code 完全指南:从入门到精通

《AI编程助手ClaudeCode深度指南》摘要 ClaudeCode作为新一代AI编程助手,凭借200K tokens的超长上下文窗口和深度代码理解能力,正在重塑开发工作流程。本文系统介绍了从安装配置到高级应用的完整使用指南: 核心优势包括: 项目级代码理解能力 Agent自主规划复杂任务 原生终端集成支持 多文件协同编辑功能 实战应用场景: 快速理解陌生项目架构 诊断性能瓶颈并提供优化方案 自动生成符合规范的API代码 开发可复用技术组件 高级技巧: 通过CLAUDE.md定义项目规范 合理使用/cle

分享AI、区块链技术及应用,未来已来 603

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

二、Spring注解事务原理

目录前言:一、Spring注解事务二、JDK注解三、自定义注解 前言: 本篇先介绍Srping注解事务的使用 其次介绍下JDK中注解以及自定义注解的使用 最后手动编写代码实现Spring注解事务并解决线程安全问题 一、Spring注解事务 1.pom依赖 <dependencies> <!-- 引入Spring-AOP等相关Jar --> <dependency> <groupId>org.springframework</gro

qq23001186的博客 819

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【Spring】事务和@Transactional注解

Spring事务和@Transactional详解

啊松同学的博客 2467

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

spring 事务注解式事务

1.上一章,我们谈到了spring+mybatis声明式事务管理,我们在文章末尾提到,在实际项目中,用得更多的是注解式事务管理,这一章将学习一下注解式事务管理的有关知识.注解式事务管理只需要在上一节的小实例上更改两个文件就好: (1)更改spring配置文件applicationContext.xml: <?xml version="1.0" encoding="UTF-8"?>...

小明的博客 1327

【Spring 篇】基于注解的Spring事务控制详解

在我们踏入事务控制的舞台之前,让我们先来了解一下什么是事务。简而言之,事务是一系列操作,要么全部成功执行,要么全部失败回滚。这就好比你在玩电子游戏,要么通关,要么回到起点重新来过。在软件开发中,事务确保了数据的完整性和一致性,是我们保持代码健壮性的重要手段。通过这篇博客,我们深入浅出地探讨了基于注解的Spring事务控制。从事务的概念开始,逐步介绍了注解、事务的传播行为、隔离级别、超时设置、回滚控制、以及一些常见的使用场景。通过生动的小故事和实际的代码示例,相信你对Spring事务管理有了更加深刻的理解。

繁依Fanyi的博客 1610

spring事务注解的解释

spring事务注解的解释 配置类中的注解 @Configuration @ComponentScan(basePackages = "com.ni") @Import({JdbcConfig.class,TransactionConfig.class}) @PropertySource("Jdbc.properties") //开启事务注解 @EnableTransactionManagement public class SpringConfiguration { } 业务层中的注解 @Servic

weixin_42245712的博客 239

Spring事务注解配置

一,spring基于注解式的事务配置方法:@Transactional 1.xml配置&lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSche...

anyeoo的博客 3298

Spring事务常用注解

文章目录Spring事务常用注解1. @EnableTransactionMannagement1.1 作用1.2 属性分析2. @Transactional2.1 作用2.2 属性分析3. @TransactionEventListener3.1 作用3.2 属性分析 Spring事务常用注解 1. @EnableTransactionMannagement 1.1 作用 表示spring开启注解事务配置的支持 1.2 属性分析 @Target(ElementType.TYPE) @Retention(

qq_29942585的博客 3413

Spring 事务注解原理

隔离级别(Isolation):与数据库隔离级别一致,默认为Default,直接使用数据库的隔离级别。注意:如果Spring的隔离级别与MySQL不一致,则以Spring为准。回滚处理(RollbackFor):控制事务什么时候回滚,如果不配置,默认在遇到RuntimeException和Error时才回滚。在try块中代理对象调用了增强方法,catch块中对异常情况进行回滚处理,finally块中清理本次事务的信息。

410的博客 1009

八、Spring事务(注解方案)

Spring事务(注解方案)

天行健,君子以自强不息 2565
上一篇: Spring注解(AOP)
下一篇: 扩展
Art&Code
博客等级 码龄7年 77粉丝 554原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值