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); } }
重启测试,网页瞬间响应,后台代码依旧执行!