アノテーションインターフェース ConcurrencyLimit


個々のメソッド、または型レベルでアノテーションが付けられている場合は特定のクラス階層内のすべてのプロキシ呼び出しメソッドの同時実行制限を指定する共通アノテーション。

型レベルの場合、型レベルから同時実行制限を継承するすべてのメソッドは共通の同時実行スロットルを共有し、それらのメソッド呼び出しの組み合わせは、共有された同時実行制限にコントリビュートします。一方、ローカルにアノテーションが付与されたメソッドの場合、指定された制限を持つローカルスロットルは、その特定のメソッドの呼び出しにのみ適用されます。

これは、一般的にスレッドプールの制限がない仮想スレッドで特に役立ちます。非同期タスクの場合、SimpleAsyncTaskExecutor で制約できます。同期呼び出しの場合、このアノテーションは ConcurrencyThrottleInterceptor を通じて同等の動作を提供します。あるいは、プログラムで使用する場合は、SyncTaskExecutor と、その継承された同時実行スロットリングサポート(7.0 で新たに追加)を検討してください。

導入:
7.0
作成者:
Juergen Hoeller, Hyunsang Han, Sam Brannen
関連事項:
  • オプション要素の概要

    オプション要素
    修飾子と型
    オプションの要素
    説明
    int
    同時実行の制限。
    同時実行の制限 (設定可能な文字列)。
    int
    limit() のエイリアス。
  • 要素の詳細

    • value

      @AliasFor("limit") int value
      limit() のエイリアス。

      他の属性が必要ない場合に使用することを目的としています (例: @ConcurrencyLimit(5))。

      関連事項:
      デフォルト:
      -2147483648
    • limit

      @AliasFor("value") int limit
      同時実行の制限。

      メソッド呼び出しごとにターゲットインスタンスを効果的にロックするには、1 を指定します。

      プールのようなスロットルには 1 よりも大きな制限を指定し、同時呼び出しの数をプールの上限と同様に制限します。

      無制限の同時実行性を実現するには -1 を指定します。

      関連事項:
      デフォルト:
      -2147483648
    • limitString

      StringSE limitString
      同時実行の制限 (設定可能な文字列)。

      ここで指定された空でない値は、limit() 属性と value() 属性をオーバーライドします。

      これは、Spring スタイルの "${...}" プレースホルダーと SpEL 式をサポートします。

      サポートされている値の詳細については、limit() の Javadoc を参照してください。

      関連事項:
      デフォルト:
      ""