SpringBoot-使用异步

SpringBoot提供了异步的支持,上手使用十分的简单,只需要开启一些注解支持,配置一些配置文件即可!

编写方法,假装正在处理数据,使用线程设置一些延时,模拟同步等待的情况;

service:

@Service
public class AsyncService {

    public void asyncTest(){
        try {
            Thread.sleep(3000 );
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.print("正在处理...");
    }
}

controller:

@RestController
public class AsyncController {

    @Autowired
    AsyncService asyncService;

    @RequestMapping("/asycTest")
    public String asyncTest(){
        asyncService.asyncTest();
        return "OK";
    }
}

此时用浏览器访问,能明显赶紧到延迟3秒后页面才显示OK! 这是同步等待的情况。

我们如果想让用户直接得到消息,就在后台使用多线程的方式进行处理即可,但是每次都需要自己手动去编写多线程的实现的话,太麻烦了,我们只需要用一个简单的办法,在我们的方法上加一个简单的注解即可,如下:

1. 给具体方法添加:@Async注解

@Service
public class AsyncService {

    @Async //开启异步
    public void asyncTest(){
        try {
            Thread.sleep(3000 );
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.print("正在处理...");
    }
}

2. 给主启动类添加:@EnableAsync  //开启异步注解的支持

@EnableAsync //开启异步注解的支持
@SpringBootApplication
public class Boot01Application {

    public static void main(String[] args) {
        SpringApplication.run(Boot01Application.class, args);
    }

}

重启测试,网页瞬间响应,后台代码依旧执行!

 

posted @ 2021-10-04 22:25  四叶笔记  阅读(156)  评论(0编辑  收藏  举报