クラス DeferredResult<T>

java.lang.ObjectSE
org.springframework.web.context.request.async.DeferredResult<T>
型パラメーター:
T - 結果の型

public class DeferredResult<T> extends ObjectSE
DeferredResult は、非同期リクエスト処理に CallableSE を使用する代替手段を提供します。Callable はアプリケーションに代わって同時に実行されますが、DeferredResult を使用すると、アプリケーションは選択したスレッドから結果を生成できます。

サブクラスはこのクラスを継承して、追加のデータまたは動作を DeferredResult に簡単に関連付けることができます。例: DeferredResult の作成に使用されるユーザーを、クラスを継承し、ユーザーの追加のプロパティを追加することで関連付けることができます。このようにして、マッピングを行うためにデータ構造を使用する必要なく、ユーザーは後で簡単にアクセスできます。

追加の動作をこのクラスに関連付ける例は、クラスを継承して追加のインターフェースを実装することで実現できます。例: DeferredResultPriorityQueueSE に追加されたときに正しい順序で処理されるように、ComparableSE を実装したい場合があります。

導入:
3.2
作成者:
Rossen Stoyanchev, Juergen Hoeller, Rob Winch, Sam Brannen
  • コンストラクターの詳細

    • DeferredResult

      public DeferredResult()
      DeferredResult を作成します。
    • DeferredResult

      public DeferredResult(@Nullable LongSE timeoutValue)
      カスタムタイムアウト値を使用して DeferredResult を作成します。

      デフォルトでは設定されていません。この場合、MVC Java Config または MVC 名前空間で設定されたデフォルトが使用されます。または、設定されていない場合、タイムアウトは基盤となるサーバーのデフォルトによって異なります。

      パラメーター:
      timeoutValue - ミリ秒単位のタイムアウト値
    • DeferredResult

      public DeferredResult(@Nullable LongSE timeoutValue, ObjectSE timeoutResult)
      タイムアウト値とタイムアウトの場合に使用するデフォルトの結果で DeferredResult を作成します。
      パラメーター:
      timeoutValue - ミリ秒単位のタイムアウト値 (null の場合は無視されます)
      timeoutResult - 使用する結果
    • DeferredResult

      public DeferredResult(@Nullable LongSE timeoutValue, SupplierSE<?> timeoutResult)
      SupplierSE に基づく動的フォールバック値を受け入れる DeferredResult(Long, Object) のバリアント。
      パラメーター:
      timeoutValue - ミリ秒単位のタイムアウト値 (null の場合は無視されます)
      timeoutResult - 使用する結果サプライヤー
      導入:
      5.1.1
  • メソッドの詳細

    • isSetOrExpired

      public final boolean isSetOrExpired()
      この DeferredResult が以前に設定されたか、基になるリクエストが期限切れになったために使用できなくなった場合は、true を返します。

      結果は、setResult(Object) または setErrorResult(Object) の呼び出しで設定されたか、タイムアウト結果がコンストラクターに提供された場合はタイムアウトの結果として設定された可能性があります。リクエストは、タイムアウトまたはネットワークエラーが原因で期限切れになる場合もあります。

    • hasResult

      public boolean hasResult()
      DeferredResult が設定されている場合は true を返します。
      導入:
      4.0
    • getResult

      public @Nullable ObjectSE getResult()
      結果を返します。結果が設定されていない場合は null を返します。結果も null になる可能性があるため、このメソッドを呼び出す前に、まず hasResult() を使用して結果があるかどうかを確認することをお勧めします。
      導入:
      4.0
    • onTimeout

      public void onTimeout(RunnableSE callback)
      非同期リクエストがタイムアウトしたときに呼び出すコードを登録します。

      このメソッドは、DeferredResult が入力される前に非同期リクエストがタイムアウトしたときに、コンテナースレッドから呼び出されます。setResult または setErrorResult を呼び出して処理を再開する場合があります。

    • onError

      public void onError(ConsumerSE<ThrowableSE> callback)
      非同期リクエスト中にエラーが発生したときに呼び出すコードを登録します。

      このメソッドは、DeferredResult が入力される前の非同期リクエストの処理中にエラーが発生したときに、コンテナースレッドから呼び出されます。setResult または setErrorResult を呼び出して処理を再開する場合があります。

      導入:
      5.0
    • onCompletion

      public void onCompletion(RunnableSE callback)
      非同期リクエストが完了したときに呼び出すコードを登録します。

      このメソッドは、タイムアウトやネットワークエラーなどの何らかの理由で非同期リクエストが完了したときに、コンテナースレッドから呼び出されます。これは、DeferredResult インスタンスが使用できなくなったことを検出できます。

    • setResultHandler

      public final void setResultHandler(DeferredResult.DeferredResultHandler resultHandler)
      結果値を処理するために使用するハンドラーを提供します。
      パラメーター:
      resultHandler - ハンドラー
      関連事項:
    • setResult

      public boolean setResult(@Nullable T result)
      DeferredResult の値を設定して処理します。
      パラメーター:
      result - 設定する値
      戻り値:
      結果が設定され、処理のために渡された場合は truefalse (結果がすでに設定されている場合、または非同期リクエストが期限切れの場合)
      関連事項:
    • setErrorResult

      public boolean setErrorResult(ObjectSE result)
      DeferredResult のエラー値を設定して処理します。値は ExceptionSE または ThrowableSE の場合があり、その場合、ハンドラーが例外を発生させたかのように処理されます。
      パラメーター:
      result - エラー結果値
      戻り値:
      true 結果がエラー値に設定され、処理のために渡された場合。false (結果がすでに設定されている場合、または非同期リクエストが期限切れの場合)
      関連事項: