springboot开发异步restful接口

SpringBoot中异步调用的使用

同步请求是会一直等待服务端相应的,需要返回结果给客户端的;而异步调用服务端会马上返回给客户端响应,完成这次整个的请求,至于异步调用的任务服务端后台自己慢慢跑就行,客户端不会关心。

  1. 开启异步调用,在启动类增加@EnableAsync使异步调用@Async注解生效
@EnableAsync
public class DbCompareApplication {
    public static void main(String[] args) {
        SpringApplication.run(DbCompareApplication.class, args);
    }
}
  1. 在需要异步调用的方法,增加注解@Async
@Component
public class TestSleep {
    @Async
    public void sleep(){
        try {
            Thread.sleep(10000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("sleep");;
    }
}
  1. Controller调用异步方法
@RestController
public class TaskController {
    @Autowired
    TestSleep testSleep;
    @GetMapping("/test")
    public String test(){
        testSleep.sleep();
        return "ok";
    }
}
  1. 效果
  • 如果不加@Async注解,客户端的调用,需要10秒才能返回结果;
  • 加了@Async注解,客户端的调用立马返回结果,调用的方法在服务端后台运行.
  1. 注意事项:部分情况下@Async注解失效
  • 调用同一个类下注有@Async异步方法
  • 调用的是静态(static)方法
  • 调用(private)私有化方法
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值