springboot 注解@async不生效的面面垂直怎么证明解决方法
这里虽然加了
@enableasync
和@async
,但是异步请求依然没有生效
方法一:
同一个类中调用需要先获取代理对象,也就是手动获取对象
@rvice@enableasyncpublic class demorvice { public void add(){ demorvice bean = springutil.getbean(demorvice.class); system.out.println("开始"); bean.ndtokafka(); system.out.println("结束"); } @async public void ndtokafka() { try { thread.sleep(10000); system.out.println("我睡醒了!!!"); } catch (interruptedexception e) { e.printstacktrace(); 清明节儿童画图片大全简单 } }}
方法二:
不同的类调用,直接注入即可
asynchandle.java (异步处理类)
@rvice@enableasyncpublic class asynchandle { @async public void ndtokafka() { try { thread.sleep(10000); system.out.println("我睡醒了!!!"); } catch (interruptedexception e) { e.printstacktrace(); } }}
demorvice.java (业务类)
@rvicepublic class demorvice { @autowired private asynchandle asynchandle; public 报字组词void add(){ system.out.println("开始"); asynchandle.ndtokafka(); system.out.println("结束"); }}
1、在需要用到的@async注解的类上加上@enableasync,或者直接加在springboot启动类上
2、异步处理方法(也就是加了@async注解的方法)只能返回的是void或者future类型
3、同一个类中调用异步方法需要先获取代理类,因为@async注解是基于spring aop (面向切面编程)的,而aop的实现是基于动态代理油腻的话模式实现的。有可能因为调用方法的是对象本身而不是代理对象,因为没有经过spring容器。。。。。。这点很重防疫工作要,也是经常遇到的
到此这篇关于java springboot注解@async不生效的解决方法的文章就介绍到这了,更多相关springboot注解@async不生效内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-04 20:12:58,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/030ee197734024ffcb70451d0d01a15b.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:java SpringBoot注解@Async不生效的解决方法.doc
本文 PDF 下载地址:java SpringBoot注解@Async不生效的解决方法.pdf
留言与评论(共有 0 条评论) |