线程池中使用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
  • asp之家 软件编程 m.aspxhome.com