前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >仿写@Transaction 事务注解

仿写@Transaction 事务注解

作者头像
分享干货的你
发布2021-04-06 17:03:17
3720
发布2021-04-06 17:03:17
举报
文章被收录于专栏:分享干货的你

最近公司项目在mysql+mybatis 使用的时候事务不生效, 后来看了一下transcation 的源码 ,逐渐的剥开事物的面纱。底层也就是aop 环绕通知。我们先写utils ,这里就是先获取连接,用threadlocal 来存connection。

获取connection ,要先 把事务设置不自动提交。

不设置自动提交,

这里使用preparedStatement,是为了防止sql 注入

最后一定要记住,remove. 防止内存泄漏 。

在写一个自定义的注解,作用于类和方法上面。

下面在写一个aop 环绕通知实现以下。

这里说明一下@With , 是指作用在这个类下面的所有方法。

先判断类上面有没有事物的注解,类上面没有,在判断方法上面有没有事务的注解。没有事务出错了就不进行回滚。

下面就是写service,没有注解的时候

这时候应该一样能插入成功。

下面就是把其加入 springboot 容器里面。

这里我们看一下spring官网,使用注解模式。

里面指定要扫描的类

在写一个测试类,运行一下

我们把事务注解,打开, 再把这条记录删除,防止主键冲突。

再一次运行一下

数据库也没有插入成功。

好了。事物的原理,我们就搞清楚了。后续的功能大家就自己实现吧。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 分享干货的你 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档