同步:就是在发出一个调用时,在没有得到结果之前, 该调用就不返回(实时处理)
异步:调用在发出之后,这个调用就直接返回了,没有返回结果(分时处理)image.png

Springboot集成异步线程调用

①:在自动审核的方法上加上@Async注解(标明要异步调用)

  1. @Override
  2. @Async //标明当前方法是一个异步方法
  3. public void autoScanWmNews(Integer id) {
  4. //代码略
  5. }

②:在文章发布成功后调用审核的方法

  1. @Autowired
  2. private WmNewsAutoScanService wmNewsAutoScanService;
  3. /**
  4. * 发布修改文章或保存为草稿
  5. * @param dto
  6. * @return
  7. */
  8. @Override
  9. public ResponseResult submitNews(WmNewsDto dto) {
  10. //代码略
  11. //审核文章
  12. wmNewsAutoScanService.autoScanWmNews(wmNews.getId());
  13. return ResponseResult.okResult(AppHttpCodeEnum.SUCCESS);
  14. }

③:在自媒体引导类中使用@EnableAsync注解开启异步调用

  1. @SpringBootApplication
  2. @EnableDiscoveryClient
  3. @MapperScan("com.heima.wemedia.mapper")
  4. @EnableFeignClients(basePackages = "com.heima.apis")
  5. @EnableAsync //开启异步调用
  6. public class WemediaApplication {
  7. public static void main(String[] args) {
  8. SpringApplication.run(WemediaApplication.class,args);
  9. }
  10. @Bean
  11. public MybatisPlusInterceptor mybatisPlusInterceptor() {
  12. MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
  13. interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
  14. return interceptor;
  15. }
  16. }