メッセージゲートウェイメソッドはタイプセマンティクスを返します。void戻り値の型は応答が生成されないことを示します(応答チャネルは作成されません)。非同期呼び出しモード(AsyncTaskExecutorを利用)。GatewayProxyFactoryBeanは、未返答メソッドとして<Void>を考慮しない
ここで、これらの2つを結合して非応答メソッドを非同期にしたい場合、返り値の型をFuture<Void>
と宣言するという単なる可能性があると主張できます:メソッドは非同期的に呼び出されます。 Future)、メソッドは応答を期待しません(型パラメーターVoidを宣言することによって)。 GatewayProxyFactoryBeanのソースコードを見てみると
は、そうではありません明確である:
private Object invokeGatewayMethod(MethodInvocation invocation, boolean runningOnCallerThread) throws Exception {
...
boolean shouldReply = returnType != void.class;
...
だけの簡単なボイド戻り値の型がチェックされます。だから私はこれが機能かバグかと思っています。これが機能の場合、Future<Void>
の戻り値の型は、期待通りに導くことができず、(私の意見では)別の方法で処理する必要があります(検証エラーなどが発生します)。