博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在线程池中的使用spring aop事务增强
阅读量:4651 次
发布时间:2019-06-09

本文共 593 字,大约阅读时间需要 1 分钟。

问题描述:

在项目里使用了线程池运行同一个类的实例方法,代码大致如下,运行时发现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      }

 

转载于:https://www.cnblogs.com/filozofio/p/9243960.html

你可能感兴趣的文章
ALIENTEK 战舰ENC28J60 LWIP和UIP补充例程(LWIP WEB有惊喜)
查看>>
计算机网络教程的好文章收录
查看>>
stm32之HAL串口中断的callback流程图
查看>>
printf格式输出
查看>>
Modbus通讯协议
查看>>
Modbus教程| Modbus协议,ASCII和RTU帧,Modbus工作
查看>>
Modbus协议深入讲解_NI
查看>>
stm32——modbus例程网址收藏
查看>>
vscode+TCC快捷编译c语言
查看>>
FreeRTOS 任务栈大小确定及其溢出检测
查看>>
FreeRTOS任务优先级说明
查看>>
单片机的栈
查看>>
IAR astyle代码美化
查看>>
推荐一些网站给大家
查看>>
单向可控硅(SCR)双向可控硅(TRIAC)
查看>>
再论i++ ++i
查看>>
表达式* ptr ++和++ * ptr是否相同?
查看>>
c语言中的数据变量类型,大小
查看>>
C语言里面"具有外部链接的静态变量"这里的"链接"是什么意思
查看>>
正则表达式,删除空行,删除特定字符所在行
查看>>