首页 > 作文

java SpringBoot注解@Async不生效的解决方法

更新时间:2023-04-04 20:13:00 阅读: 评论:0

目录
问题描述:解决方案:总结:

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 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图