范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

为什么内部方法调用会导致Transactional失效?

  在上一篇文章中,我们列举了@Transactional事务失效的几大场景。其中有一个场景是class内部方法之间的调用,如下:    @Transactional(rollbackFor = Exception.class)     public Long createNewUser(RegisterRequest request) {         UserDO userDO = new UserDO();         userDO.setLoginName(request.getLoginName());         userDO.setLoginPwd(request.getLoginPwd());         userDO.setCreateTime(new Date());         userDO.setUpdateTime(new Date());         this.save(userDO);         //这里还可以保存userinfo扩展信息,双表操作,需要事务         addUserInfo();         return userDO.getId();     }          @Transactional(rollbackFor = Exception.class)     public void addUserInfo() {         //.....     }
  多年经验的资深程序员都会在这个点上犯错,那这是什么原因呢?接下来我们简单地分析一下。
  @Transactional 是由spring aop机制实现的,究其根本,其实是由java 动态代理机制实现的,这种实现方式要想生效,必须是外部调用,因为只有外部调用才会走代理增强的实现。 addUserInfo()的调用方式相当于this.addUserInfo(),this是什么大家都知道吧,它指向的是另一个实例,根本就不是代理类。
  好在spring对这种自调用也给出了解决方案,那就是自注入(Self Injection),代码如下:    @Autowire     private xxService xxService;      @Transactional(rollbackFor = Exception.class)     public Long createNewUser(RegisterRequest request) {         UserDO userDO = new UserDO();         userDO.setLoginName(request.getLoginName());         userDO.setLoginPwd(request.getLoginPwd());         userDO.setCreateTime(new Date());         userDO.setUpdateTime(new Date());         this.save(userDO);       //这样就生效了         xxService.addUserInfo();         return userDO.getId();     }          @Transactional(rollbackFor = Exception.class)     public void addUserInfo() {         //.....     }
  这种解决方案不是很优美,但是也只能这样了。这个自调用问题在Spring AOP中广泛存在,本质上是动态代理无法解决的盲区,只有AspectJ这类静态代理才能解决。

大数据学习Hadoop入门学习书单Hadoop作为大数据的主流技术框架,至今仍然在大数据技术圈占有重要的地位,大数据学习基本上也离不开Hadoop,从Hadoop开始,学习核心组件,逐步扩展到生态圈其他组件,这是比大数据概念解析之数据仓库简介在大数据系统平台当中,数据存储数据库数据仓库是非常重要的概念,共同支持大数据存储的实际需求。在大数据处理当中,大数据存储这个环节,数据仓库技术起到重要的作用。今天我们来对数据仓库做Java大数据Hbase分布式存储入门之前的系列文章当中,已经为大家介绍了大数据存储当中的MongoDBRedis等数据库,今天接着来讲Hbase。Hbase在大数据存储当中,与Hadoop生态紧密相关,也是Hadoo大数据有哪些工作?岗位技能要求汇总大数据发展趋势一路向好,尤其是在实现落地之后,大数据在各个行业的应用,开始快速扩展,行业人才需求也由此开始增长。很多人常常听到大数据这个词,但是对于大数据有哪些工作,各个岗位的技能大数据核心技术之分布式基础入门大数据技术的核心,离不开分布式理论。大数据从概念走向落地,也是因为大数据技术的成熟,换句话说,就是大数据技术使得大规模数据处理成为可能,而大数据技术背后的核心,指向的是分布式理论。大数据还是人工智能?哪个发展更好大数据和人工智能,都是当下的技术热点,受到的关注都不少,并且这两个技术领域,本身也存在很强的关联性,因此很多人也会把这两者拿来做对比,从技术难度到未来前景,大家都非常关注。大数据还Java大数据分布式存储Redis初级入门在Java大数据当中,Redis作为数据存储的一种的解决方案,主流运用很多。Redis可作为数据库缓存或者消息代理,从内存加载数据,相比传统的数据库解决方案,具有更快的读写性能。今从传统工科到大数据,怎么进行学习规划大趋势下,传统工科专业的就业,比如说机械生化环材等专业,因为工作环境薪资待遇发展前景等各方面,常常被诟病,很多人都在转行的边缘徘徊试探。但转到一个新的方向,毕竟不易,今天我们就来聊大数据进阶之Spark运行流程在大数据的诸多技术框架当中,Spark发展至今,已经得到了广泛的认可。Hadoop与Spark可以说是企业级数据平台的主流选择,基于不同的应用场景,来搭建符合需求的大数据系统平台。大数据Spark框架Spark生态圈入门在大数据计算引擎当中,Spark不能忽视的一个重要技术框架,Spark继承了HadoopMapReduce的优势,同时实现了计算效率的提升,满足更加实时性的数据处理需求。今天我们就学大数据需要学哪些内容?大数据主流技术栈简介被广泛关注的大数据,这几年在国内的发展,可以说是进入了比较平稳的一个时期,基本上企业对于技术开发人员的要求,都开始与大数据接轨。那么学大数据需要学哪些内容,今天我们从大数据主流技术
三星打入中国芯片市场!拿下供货大众汽车芯片权,下一步长安?作为全球最大的汽车使用国,中国拥有长安哈佛吉利等众多汽车品牌。而随着人们对汽车智能化的要求提升,国内外汽车制造商对汽车芯片的需求也是越来越多。据统计,全球汽车芯片市场规模自20216月份汽车销量同比下降达12。4!工信部回应受芯片供应链影响今日上午,国务院新闻办公室举行新闻发布会。在会上工业和信息化部党组成员总工程师新闻发言人田龙玉,针对记者提问有关5月以来,我国汽车产量销量呈现同比下降的问题回答了记者的提问,田龙玉网约车又开始砸钱补贴了,想当行业大哥?只需做到这一点导读提到网约车市场之争,2016年我还依稀记得Uber在那一年,疯狂烧掉10多亿美元,最终以被滴滴并购最终结束了这场资本直接的金钱战斗。胜者为王,败者为寇,统治了5年网约车市场的滴realme真我GTNeo2T发布,天玑1200AI处理器首发,售价1899元起10月19日下午,realme真我召开了新品发布会,推出了两款手机与一款智能手表。其中realme真我GTNeo2T搭载了一枚天玑1200AI处理器,这也是天玑1200AI首次在手低调不等于无名,海信是国货之光乃名副其实海信,作为国内知名家电企业之一,却是存在感最低,亦是最为低调的一家,其一没有像格力海尔美的一样广告满天飞,其二海信从来只是闷声研发产品,极少摆弄一些花里胡哨的宣传,因此,不少人忽略芯片行业再迎好消息,这一款芯片华为海思将实现量产自从美国实施制裁以来,芯片问题一直困难着华为及国内部分企业,缺芯问题似乎已经成为了人们茶余饭后所谈的话题之一了。虽然此前有爆料称,我国已经能够实现量产12nm芯片的技术,而且良品率10分30秒,花费2800W美元,亚马逊创始人贝索斯完成太空游亚马逊创始人贝索斯,当地时间7月20日他的弟弟马克贝佐斯(MarkBezos)女性航天先驱沃利冯克(WallyFunk),以及年仅18岁的物理系学生奥利佛戴蒙(OliverDaem你记忆力衰退原因找到了,科学研究表明你该运动了!减少大脑衰老和身体轻微活动一样简单,即便你看起来很健康,在大脑衰老的过程产生很多问题,包括工作生活中记忆减退,最糟糕的情况就是患上阿尔茨海默氏症。目前有许多科学家都在寻找减少大脑衰600元买2019新款Kindle送LED前灯黑暗阅读无压力,还省电!近日亚马逊推出2019新款Kindle(又名Kindle第10代,或Kindle9),机身材质是一块黑色或白色的矩形哑光塑料,尺寸为160x113x8。7mm,整机重量为174g,骁龙665730发布6月份一大批中端机袭来,请做好准备!目前,在移动处理器上,高通几乎占据了一半市场份额,在今天旧金山举办的AIDay活动上,高通又发布了新的中端移动处理器,分别是骁龙665骁龙730730G。简单的来说。发布的骁龙66外媒拆解华为P30Pro内部结构胜过iPhone,给设计师点赞!近日,国外知名拆解机构iFixit对刚发布不久的华为P30Pro进行全面拆解。在拆解过程中华为P30Pro使用传统的方式撬开屏幕中框后盖变得越来越难,iFixit观察到P30Pro