iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >java SpringBoot注解@Async不生效的解决方法
  • 601
分享到

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

2024-04-02 19:04:59 601人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录问题描述:解决方案:总结:SpringBoot 注解@Async不生效的解决方法 问题描述: 这里虽然加了@EnableAsync和@Async,但是异步请求依然没有生效 解决

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

问题描述:

在这里插入图片描述

这里虽然加了@EnableAsync@Async,但是异步请求依然没有生效

解决方案:

方法一:

同一个类中调用需要先获取代理对象,也就是手动获取对象

@Service
@EnableAsync
public class DemoService {
    public void add(){
        DemoService bean = springUtil.getBean(DemoService.class);
        System.out.println("开始");
        bean.sendTokafka();
        System.out.println("结束");
    }
    @Async
    public void sendToKafka() {
        try {
            Thread.sleep(10000);
            System.out.println("我睡醒了!!!");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

方法二:

不同的类调用,直接注入即可

AsyncHandle.java (异步处理类)

@Service
@EnableAsync
public class AsyncHandle {
    @Async
    public void sendToKafka() {
        try {
            Thread.sleep(10000);
            System.out.println("我睡醒了!!!");
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

DemoService.java (业务类)

@Service
public class DemoService {
    @Autowired
    private AsyncHandle asyncHandle;
    
    public void add(){
        System.out.println("开始");
        asyncHandle.sendToKafka();
        System.out.println("结束");
    }
}

总结:

1、在需要用到的@Async注解的类上加上@EnableAsync,或者直接加在springboot启动类上
2、异步处理方法(也就是加了@Async注解的方法)只能返回的是void或者Future类型
3、同一个类中调用异步方法需要先获取代理类,因为@Async注解是基于Spring aop (面向切面编程)的,而AOP的实现是基于动态代理模式实现的。有可能因为调用方法的是对象本身而不是代理对象,因为没有经过Spring容器。。。。。。这点很重要,也是经常遇到的

到此这篇关于java SpringBoot注解@Async不生效的解决方法的文章就介绍到这了,更多相关SpringBoot注解@Async不生效内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: java SpringBoot注解@Async不生效的解决方法

本文链接: https://www.lsjlt.com/news/138023.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作