java – spring mvc:DeferredResult和ListenableFuture之间的区别?

Spring MVC允许控制器返回DeferredResult和ListenableFuture(由ListenableFutureTask实现)来执行异步响应.有什么不同?我什么时候应该使用它们?
最佳答案
它们在概念上彼此相似,并且可以互换地用作控制器的方法结果,这要归功于ListenableFutureReturnValueHandler,它将第二个调整到第一个.

但是,DeferredResult类和ListenableFuture接口都来自两个不同的世界:

>首先来自版本3.2中添加的org.springframework.web.context.request.async包.
>自4.0以来可用的org.springframework.util.concurrent包.

此外,它们是为满足不同需求而添加的.虽然第一个提供了基本和完整的功能来异步提供控制器的结果,但第二个允许您除了使用现有的类/框架桥接您的实现,例如ExecutorService框架(请参阅ListenableFutureTask).

所以最重要的是,当你想要使用类似ExecutorService的框架时,使用DeferredResult类就足以让你自己或ListenableFuture实现进一步的处理.

转载注明原文:java – spring mvc:DeferredResult和ListenableFuture之间的区别? - 代码日志