请求异步处理不起作用

时间:2013-10-13 14:51:02

标签: spring spring-mvc

我想并行处理我的控制器(Spring MVC)处理请求。我在下面使用@Callable并且它不起作用,因为下一个请求在第一个请求完成后处理(返回视图)。

@RequestMapping(method = RequestMethod.GET)
public Callable<String> helloWorld(final Model model) throws InterruptedException {
    return new Callable<String>() {
        @Override
        public String call() throws Exception {
            Thread.sleep(5000);
            return "helloWorld";
        }
    };
}

我需要任何特殊代码吗?

1 个答案:

答案 0 :(得分:2)

documentation for Spring MVC表示以下关于处理程序方法的Callable<?>返回类型

  

当应用程序想要生成时,可以返回Callable   在Spring MVC管理的线程中异步返回值。

Spring将获取返回的Callable实例,将其传递给ExecutorService(实际上比那更多处理,但为了简单起见)并在另一个Thread中执行它然后你的初始请求。等待5秒后,它将返回与视图名称"helloWorld"关联的视图。