SpringBoot用@Async实现异步调用

@Async 的使用

1、在启动类中加上注解@EnableAsync启用异步

 2、在使用异步的方法上加上注解@Async,自己写一个线程池,指定线程池。不建议使用默认的线程池。

 
  在线程池应用中,参考阿里巴巴java开发规范:线程池不允许使用Executors去创建,不允许使用系统默认的线程池,
推荐通过ThreadPoolExecutor的方式,这样的处理方式让开发的工程师更加明确线程池的运行规则,规避资源耗尽的风险
     
  我这个功能的业务逻辑是:配送派工完成后给顾客发送微信公众号消息,提醒顾客货物开始配送了
 
  于是在派工完成业务逻辑完成后调用推送消息的方法,是无返回值的调用

 

 

  方法上加注解

 

  在启动类上写自己的线程池

 

测试是异步调用成了

3、注意事项

  • 异步方法不能与异步方法在同一个类中
  • 如果使用SpringBoot框架必须在启动类中增加@EnableAsync注解
  • 在Async 方法上标注@Transactional是没用的。 在Async 方法调用的方法上标注@Transactional 有效。
  • 类或者方法中使用@Async注解,类上标有该注解表示类中方法都是异步方法,方法上标有该注解表示方法是异步方法
  • 注解的方法必须是public方法,不能是static

 

参考文章:

https://blog.csdn.net/houxian1103/article/details/110299410

https://blog.csdn.net/qq_44695727/article/details/120082934

 

 

 

 

 

 

posted @ 2023-06-25 17:02  歪脖大叔  阅读(70)  评论(0编辑  收藏  举报