线程池中使用spring aop事务增强
作者:filozofio 时间:2021-08-06 06:37:19
这篇文章主要介绍了线程池中使用spring aop事务增强,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
问题描述:
在项目里使用了线程池运行同一个类的实例方法,代码大致如下,运行时发现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
标签:线程池,spring,aop,事务,增强
0
投稿
猜你喜欢
Java并发编程之Java内存模型
2023-08-17 23:06:10
深入浅析jni中的java接口使用
2023-07-22 19:54:23
java用户管理注册功能 含前后台代码
2022-08-01 12:05:11
Java程序员容易犯的10大低级错误
2022-01-09 06:18:04
C#获取ListView鼠标下的Item实例
2023-04-29 11:45:10
Android CameraManager类详解
2022-06-12 13:05:52
Java螺旋矩阵处理方法详解
2021-09-24 02:14:55
C#实现windows form拷贝内容到剪贴板的方法
2022-06-01 12:22:15
SpringBoot项目鉴权的4种方式小结
2021-10-23 20:10:05
Java运行环境搭建的图文教程
2021-06-22 07:44:41
解决nacos升级spring cloud 2020.0无法使用bootstrap.yml的问题
2021-12-02 19:44:29
Maven安装与配置及Idea配置Maven的全过程
2023-05-20 01:37:59
Android Jetpack架构组件Lifecycle详解
2023-03-04 22:21:01
Java Volatile 变量详解及使用方法
2023-03-13 13:27:10
Java NIO Buffer实现原理详解
2023-12-10 22:37:37
通过实例了解java spring使用构造器注入的原因
2022-11-25 03:48:24
Android组件ViewStub基本使用方法详解
2022-01-15 07:30:54
Android实现语音识别代码
2022-06-03 03:26:33
unity3D实现摄像机抖动特效
2022-09-20 12:10:42
基于C#实现XML文件读取工具类
2021-10-07 07:42:19