来自Spring MVC Controller的异步调用

时间:2011-11-16 14:26:50

标签: java spring spring-mvc asynchronous

我正在尝试从我的(基于Spring MVC的)Controller中进行异步调用。

我正在使用以下代码段:

FutureTask<Object> runnableTask = new FutureTask<Object>(  
                new Runnable() {  
                    public void run() {  
                        // do something
                    }  

                }, null);  
runnableTask.run(); 

但是,无论如何,这都不是异步执行的,即我的Controller在上述任务完成之前不会返回响应(到视图)。我错过了什么或有其他方法可以这样做吗?

1 个答案:

答案 0 :(得分:4)

你需要一个遗嘱执行人来做到这一点:

Executor executor = Executors.newXx(..); //any executor, likely single-threaded
executor.submit(yourRunnable);
executor.shutdown();

但春天已经有了(docs) - 只需创建一个方法并用@Async注释它(并在xml中有<task:annotation-driven />