首页 > 编程语言 > 详细

SpringCloud 微服务中 @Async 注解自定义线程池 引发的aop 问题

时间:2019-11-12 13:06:48      阅读:277      评论:0      收藏:0      [点我收藏+]

背景


在 使用springCloud 的@Async注解来做异步操作时,想自定义其线程池。

 

引发问题


自定义完线程池后,发现代码里并没有使用自定义线程池里的线程,于是新建一个demo工程,一样的配置代码,又测试了一下,发现自定义线程池竟然起作用了,。。。
经过排查,发现项目里对加@Async注解的方法调用是在同一个类里被调用的,即异步方法是被同一个类中的另一个方法调用的,由此想起以前在使用Cacheale因为同类调用导致缓存不起作用。

 

原因


spring 的这些注解是使用spring aop来动态代理的,同类调用时,我们是使用当前对象this来调用方法,而不是代理对象,因此aop无法生效。

 

解决


将加注解的方法单独封装到一个类,然后在另一个类里调用方法,这样就避免了同类调用导致的问题。

 

SpringCloud 微服务中 @Async 注解自定义线程池 引发的aop 问题

原文:https://www.cnblogs.com/tianciliangen/p/11840717.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!