AopContext.currentProxy的原理和实战(解决同一个类中方法嵌套事务的失效问题)

这篇具有很好参考价值的文章主要介绍了AopContext.currentProxy的原理和实战(解决同一个类中方法嵌套事务的失效问题)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

@EnableAspectJAutoProxy(proxyTargetClass = true, exposeProxy = true)
public class TransactionTest {
 
    /**
     * 方法A没事务
     *
     * @param
     * @return void
     */
    public String A(){
        System.out.println("A方法执行开始!!!");
        //生成TransactionTest代理类,再调用B方法,B的事务就回单独生效,并且异常回滚
        String result = ((TransactionTest)AopContext.currentProxy()).B();
        System.out.println("A方法执行结束!!!");
        return result;
    }
 
    /**
     * 事务B单独的事务
     * 使用代理,同一类中A方法调用B方法事务可以生效
     * @param
     * @return void
     */
    @Transactional(rollbackFor = Exception.class)
    public String B(){
        return "事务B触发成功!!!";
    }
}

其实AopContext.currentProxy()的本质是使用的ThreadLocal生成本地代理,这样的做法可能影响性能,后续文章对ThreadLocal的内部原理和性能进行进一步深入!

如果本篇文章对你有帮助的话,很高兴能够帮助上你。

当然,如果你觉得文章有什么让你觉得不合理、或者有更简单的实现方法又或者有理解不来的地方,希望你在看到之后能够在评论里指出来,我会在看到之后尽快的回复你。文章来源地址https://www.toymoban.com/news/detail-429750.html

到了这里,关于AopContext.currentProxy的原理和实战(解决同一个类中方法嵌套事务的失效问题)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Microsoft Edge浏览器主页被篡改的解决办法(Microsoft Edge浏览器每次打开都是同一个页面)

    Microsoft Edge每次打开都是同一个页面,在设置- - 处修改也没用,这种情况一般是Microsoft Edge浏览器主页被篡改,解决办法如下: 1.桌面右键单击 Microsoft Edge ,选择 属性 ,然后选择 快捷方式, 把 目标 后打开Microsoft Edge后每次出现的页面的网址删除,把这个网址删除并保存即

    2024年02月11日
    浏览(79)
  • 同一个请求同一个参数,postman发送成功,jmeter失败

    当使用jmeter 请求时吗,注意请求参数中是否包含中文。 问题来由: 1.先用postman发送,成功。  2.一模一样,header一样,请求一样,但是就是一直查询不出来。 3.经过fiddler抓包,再次对比请求头,请求体,还是没有发现有什么差别。 4.猜想: 此接口其他参数传送,都没有问题

    2024年02月13日
    浏览(55)
  • 多个硬盘挂载到同一个目录

    同一目录无法重复挂载,后挂载的会覆盖之前挂载的磁盘。但是现在需要将4块磁盘并行挂载,该如何操作呢? 将2块磁盘合并到一个逻辑卷 进行挂载。 基本知识 基本概念PV(Physical Volume)- 物理卷物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整

    2024年02月08日
    浏览(83)
  • CSS 沿着同一个方向旋转

    主要解决旋转360°后倒转的问题,沿着一个方向旋转,而不是倒回去重新开始。 效果  源码 在线示例 同方向旋转

    2024年02月15日
    浏览(51)
  • 【点击新增一个下拉框 与前一个内容一样 但不能选同一个值】

    主要是看下拉选择el-option的disabled,注意不要混淆 methods:

    2024年02月11日
    浏览(60)
  • 如何将微前端项目部署在同一台服务器同一个端口下

    作者:京东科技 高飞 本文旨在通过部署微前端项目的实践过程中沉淀出一套部署方案,现就一些重点步骤、碰到的问题做了一些总结。 因为线上部署主应用时需要用到子应用的线上可访问地址,因此部署顺序应该是先部署子应用,保证子应用能够线上可访问后,再将子应用

    2023年04月11日
    浏览(57)
  • 不同版本.net引用同一个项目

    项目文件.csproj文件内容如下: 重点是:不能有其他的 netstandard2;net40;net45;net46;net6

    2024年02月10日
    浏览(55)
  • 不同设备使用同一个Git账号

    想要在公司和家里的电脑上用同一个git账号来pull, push代码 第1种方法, 依次输入 第2种方法, 输入 用户名和邮箱与原设备保持一致 输入上面三句话之后会弹出提示是否在此电脑上创建.ssh文件夹,回车同意即可 接着会提示设置密码,不设置就连按两次回车 完成之后,在 “

    2024年04月10日
    浏览(56)
  • Github,gitee配置同一个ssh key步骤+ssh: connect to host github.com port 22: Connection timed out解决方案(纯小白教程)

    不要看内容太长,因为插了好多图片,只是为了每个步骤都清清楚楚 😎 每当新解决一个问题的时候就尽量把他记录下来,因为过不了多久就会忘记,回过来看自己的文章记录是常常有的事情 今天把Github配置ssh key的起因是因为在github上下载别人的项目,之前就只是会用 Dow

    2024年01月25日
    浏览(48)
  • Unity批量给模型上同一个材质

    Unity批量给模型上同一个材质 第一步:先选择所有要上材质的模型:  第二步:将创建的材质拖到右侧属性栏:  

    2024年02月12日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包