怎么在线程池中使用spring aop增强事务

  介绍

这篇文章将为大家详细讲解有关怎么在线程池中使用spring aop增强事务,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

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

@ transactional   public 才能;void  doJob (), {   ,,,EXECOTOR.execute((),→工作());   ,,}      @ transactional才能   public 才能;void 工作(){//才能db  operation    以前,,}

原因分析:

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

解决办法:

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

@ transactional   public 才能;void  doJob (), {   ,,,AAAService  proxy =, (AAAService), AopContext.currentProxy ();   ,,,EXECOTOR.execute ((),→proxy.job ());   ,,}      @ transactional才能   public 才能;void 工作(){//才能db  operation    以前,,}

关于怎么在线程池中使用spring aop增强事务就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

怎么在线程池中使用spring aop增强事务