无法理解Spring框架中的@Async注释文档

时间:2018-12-06 16:38:40

标签: java spring spring-boot

我正在阅读@Async注释的document,下面的句子使我感到困惑。

  

从代理返回的Future句柄将是实际的异步Future,可用于跟踪异步方法执行的结果。但是,由于目标方法需要实现相同的签名,因此它必须返回一个临时的Future句柄,该句柄仅将值传递给以下对象: Spring的AsyncResult,EJB 3.1的AsyncResult或CompletableFuture.completedFuture(Object)。

我想知道a Future handle returned from the proxy是什么。我知道Java中的Future,但是Future句柄是什么?代理指的是什么?什么是a temporary Future handle

1 个答案:

答案 0 :(得分:1)

  

未来的处理方式是什么?

您可以将其读为“将来的实例”或“将来的对象”。

  

代理指的是什么?

当您从bean A调用bean B的异步方法时,Spring会自动将任务提交给执行者,以便该方法在单独的线程中异步执行。这是可能的,因为它在A中注入的B不是您创建的B类的实际实例。实际上,它是动态代理的一个实例,它委派给B类实际实例的实例。正是这个代理处理将任务提交给执行者,创建Future等。就像您调用事务方法一样,它也是一个在调用实际方法之前自动启动事务的代理。

  

什么是Future临时句柄?

这是您在实际方法中创建的Future的实例,而不是返回给调用方的实际Future,而是仅包装了方法的结果。