介绍
这篇文章将为大家详细讲解有关怎么在线程池中使用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增强事务