线程池运行时发现job方法的事务不生效怎么解决

这篇文章主要讲解了“线程池运行时发现job方法的事务不生效怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“线程池运行时发现job方法的事务不生效怎么解决”吧!

成都创新互联公司专业为企业提供米东网站建设、米东做网站、米东网站设计、米东网站制作等企业网站建设、网页设计与制作、米东企业网站模板建站服务,十载米东做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

问题描述:

在项目里使用了线程池运行同一个类的实例方法,代码大致如下,运行时发现job方法的事务不生效

@Transactional  public void doJob() {    EXECOTOR.execute(() ->job());  }  @Transactional  public void job(){  //db operation  }

原因分析:

debug进入job方法时,发现运行job方法的实例是个普通实例而不是个代理对象,因此无法实现aop增强

解决办法:

在doJob中调用AopContext.currentProxy()获取当前的代理对象,在代理对象上调用job方法

@Transactional  public void doJob() {    AAAService proxy = (AAAService) AopContext.currentProxy();    EXECOTOR.execute(() ->proxy.job());  }  @Transactional  public void job(){  //db operation  }

感谢各位的阅读,以上就是“线程池运行时发现job方法的事务不生效怎么解决”的内容了,经过本文的学习后,相信大家对线程池运行时发现job方法的事务不生效怎么解决这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


网页标题:线程池运行时发现job方法的事务不生效怎么解决
网站地址:http://bzwzjz.com/article/pdcjio.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 梓潼网站设计 app网站建设 成都品牌网站设计 成都网站制作 定制网站设计 营销型网站建设 网站设计制作 温江网站设计 成都商城网站建设 成都网站建设推广 成都网站建设 成都网站设计 成都网站制作 外贸网站设计方案 盐亭网站设计 外贸网站建设 响应式网站设计 网站制作 四川成都网站建设 四川成都网站制作 手机网站建设 网站制作