美文网首页
SpirngMVC异步请求

SpirngMVC异步请求

作者: 每天进步一一点 | 来源:发表于2018-04-25 19:16 被阅读0次

在SpirngMVC3.2以后支持两种异步请求

这种方式是把耗时逻辑任务的执行与服务器的管理线程相分离,从而实现多线程的并行。因为HTTP响应在异步处理结束之后才生成。

Callable:在类中直接返回

DeferredResult:可以控制超时的时间

@RequestMapping(path ="test/{id}", method = RequestMethod.GET)

@ResponseBody

public Callable send(@PathVariable String id){

return new Callable() {

@Override

public Object call()throws Exception {

return "123";

}

};

}

DeferredResult的demo

@RequestMapping(path ="test2/{id}", method = RequestMethod.GET)

@ResponseBody

public DeferredResult send2(@PathVariable String id){

DeferredResult deferredResult =new DeferredResult();

deferredResult.setResult("123");

return deferredResult;

}

在简单测试,发现DeferredResult更快,更实用

大概的流程(官网copy):

控制器先返回一个Callable对象

Spring MVC开始进行异步处理,并把该Callable对象提交给另一个独立线程的执行器TaskExecutor处理

DispatcherServlet和所有过滤器都退出Servlet容器线程,但此时方法的响应对象仍未返回

Callable对象最终产生一个返回结果,此时Spring MVC会重新把请求分派回Servlet容器,恢复处理

DispatcherServlet再次被调用,恢复对Callable异步处理所返回结果的处理

DeferredResult异步请求的处理顺序也非常类似,区别仅在于应用可以通过任何线程来计算返回一个结果:

对DeferredResult的流程

控制器先返回一个DeferredResult对象,并把它存取在内存(队列或列表等)中以便存取

Spring MVC开始进行异步处理

DispatcherServlet和所有过滤器都退出Servlet容器线程,但此时方法的响应对象仍未返回

由处理该请求的线程对 DeferredResult进行设值,然后Spring MVC会重新把请求分派回Servlet容器,恢复处理

DispatcherServlet再次被调用,恢复对该异步返回结果的处理

相关文章

  • SpirngMVC异步请求

    在SpirngMVC3.2以后支持两种异步请求 这种方式是把耗时逻辑任务的执行与服务器的管理线程相分离,从而实现多...

  • 深入分析SpirngMVC源码

    SpirngMVC流程综述 用户发送请求至前端控制器DispatcherServlet。 DispatcherSe...

  • OKHTTP

    OKHTTP 引用 权限配置 测试URL 同步请求 异步请求 异步get请求 异步测试post请求 Retrofi...

  • AFN异步单任务请求和异步多任务请求

    此处介绍AFNetingWorking 异步单任务请求和异步多任务请求的两种方式。 为什么要使用异步请求 异步请求...

  • Okhttp3

    简介 配置 请求思路 get请求思路 post请求思路 get,post 同步和异步请求 异步请求(get) 同步...

  • 1.2 网络请求-异步请求

    网络请求-异步请求

  • 基于Spring框架实现异步请求与异步调用

    一、异步请求 1.1 同步请求与异步请求 首先看一下同步请求的线程执行模型: 接着看一下异步请求的线程执行模型: ...

  • okhttp分析

    okhttp使用分为同步请求和异步请求:异步请求: request是一个请求对像,包含了请求url,methord...

  • 网络协议

    网络请求分为4类:GET同步请求GET异步请求POST同步请求POST异步请求 同步网络请求步骤: 1:创建网址字...

  • iOS原生网络请求-"连接"与"会

    1.NSURLConnection 1.1 get 异步请求 1.2 post 异步请求 1.3 post 同步请...

网友评论

      本文标题:SpirngMVC异步请求

      本文链接:https://www.haomeiwen.com/subject/eubylftx.html