クラス AsyncExecutionInterceptor
- 実装されたすべてのインターフェース:
Advice
、Interceptor
、MethodInterceptor
、Aware
、BeanFactoryAware
、Ordered
- 既知の直属サブクラス
AnnotationAsyncExecutionInterceptor
AsyncTaskExecutor
を使用して、メソッド呼び出しを非同期に処理する AOP アライアンス MethodInterceptor
。通常、Async
アノテーションとともに使用されます。 ターゲットメソッドのシグネチャーに関しては、すべてのパラメーター型がサポートされています。ただし、戻り型は void
または java.util.concurrent.Future
に制限されます。後者の場合、プロキシから返される Future ハンドルは、非同期メソッド実行の結果を追跡するために使用できる実際の非同期 Future になります。ただし、ターゲットメソッドは同じ署名を実装する必要があるため、(Spring の AsyncResult
や EJB の jakarta.ejb.AsyncResult
のように) 戻り値を渡すだけの一時的な Future ハンドルを返す必要があります。
戻り値の型が java.util.concurrent.Future
の場合、実行中にスローされた例外は、呼び出し元がアクセスして管理できます。ただし、void
戻り値型では、そのような例外を送信することはできません。その場合、そのような例外を処理するために AsyncUncaughtExceptionHandler
を登録できます。
メモ: AnnotationAsyncExecutionInterceptor
サブクラスは、Spring の @Async
アノテーションと組み合わせてエグゼキューター修飾をサポートするため、優先されます。
- 導入:
- 3.0
- 作成者:
- Juergen Hoeller, Chris Beams, Stephane Nicoll
- 関連事項:
フィールドサマリー
クラス org.springframework.aop.interceptor.AsyncExecutionAspectSupport から継承されたフィールド
DEFAULT_TASK_EXECUTOR_BEAN_NAME, logger
インターフェース org.springframework.core.Ordered から継承されたフィールド
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
コンストラクターのサマリー
コンストラクター説明AsyncExecutionInterceptor
(ExecutorSE defaultExecutor) デフォルトのAsyncUncaughtExceptionHandler
で新しいインスタンスを作成します。AsyncExecutionInterceptor
(ExecutorSE defaultExecutor, AsyncUncaughtExceptionHandler exceptionHandler) 新しいAsyncExecutionInterceptor
を作成します。メソッドのサマリー
修飾子と型メソッド説明protected ExecutorSE
getDefaultExecutor
(BeanFactory beanFactory) この実装は、コンテキスト内で一意のTaskExecutor
Bean を検索するか、それ以外の場合は "taskExecutor" という名前のExecutor
SE Bean を検索します。protected StringSE
getExecutorQualifier
(MethodSE method) 特定のメソッドを実行するときに使用する特定のエグゼキューターの修飾子を取得します。int
getOrder()
このオブジェクトの順序値を取得します。invoke
(MethodInvocation invocation) 指定されたメソッド呼び出しをインターセプトし、メソッドの実際の呼び出しを正しいタスクエグゼキューターに送信して、呼び出し元にすぐに戻ります。クラス org.springframework.aop.interceptor.AsyncExecutionAspectSupport から継承されたメソッド
configure, determineAsyncExecutor, doSubmit, findQualifiedExecutor, handleError, setBeanFactory, setExceptionHandler, setExecutor
コンストラクターの詳細
AsyncExecutionInterceptor
デフォルトのAsyncUncaughtExceptionHandler
で新しいインスタンスを作成します。- パラメーター:
defaultExecutor
- 委譲先のExecutor
SE (通常は SpringAsyncTaskExecutor
またはExecutorService
SE )。それ以外の場合は、このインターセプターのローカルエグゼキューターがビルドされます
AsyncExecutionInterceptor
public AsyncExecutionInterceptor(@Nullable ExecutorSE defaultExecutor, AsyncUncaughtExceptionHandler exceptionHandler) 新しいAsyncExecutionInterceptor
を作成します。- パラメーター:
defaultExecutor
- 委譲先のExecutor
SE (通常は SpringAsyncTaskExecutor
またはExecutorService
SE )。それ以外の場合は、このインターセプターのローカルエグゼキューターがビルドされますexceptionHandler
- 使用するAsyncUncaughtExceptionHandler
メソッドの詳細
invoke
指定されたメソッド呼び出しをインターセプトし、メソッドの実際の呼び出しを正しいタスクエグゼキューターに送信して、呼び出し元にすぐに戻ります。- 次で指定:
- インターフェース
MethodInterceptor
のinvoke
- パラメーター:
invocation
- インターセプトして非同期にするメソッド- 戻り値:
- 元のメソッドが
Future
を返す場合はFuture
SE。それ以外の場合はnull
。 - 例外:
ThrowableSE
- インターセプターまたはターゲットオブジェクトが例外をスローする場合
getExecutorQualifier
特定のメソッドを実行するときに使用する特定のエグゼキューターの修飾子を取得します。このメソッドのデフォルトの実装は、事実上ノーオペレーションです。
サブクラスはこのメソッドをオーバーライドして、たとえば指定されたメソッドのアノテーションを介して修飾子情報を抽出するためのサポートを提供できます。
- 次で指定:
- クラス
AsyncExecutionAspectSupport
のgetExecutorQualifier
- パラメーター:
method
- エグゼキューター修飾子メタデータをインスペクションするメソッド- 戻り値:
- 常に
null
- 導入:
- 3.1.2
- 関連事項:
getDefaultExecutor
この実装は、コンテキスト内で一意のTaskExecutor
Bean を検索するか、それ以外の場合は "taskExecutor" という名前のExecutor
SE Bean を検索します。どちらも解決できない場合 (たとえば、BeanFactory
がまったく構成されていない場合)、デフォルトが見つからない場合、この実装はローカル使用のために新しく作成されたSimpleAsyncTaskExecutor
インスタンスにフォールバックします。- オーバーライド:
- クラス
AsyncExecutionAspectSupport
のgetDefaultExecutor
- パラメーター:
beanFactory
- デフォルトのエグゼキューター検索に使用する BeanFactory- 戻り値:
- デフォルトのエグゼキューター、または使用可能なものがなければ
null
- 関連事項:
getOrder
public int getOrder()インターフェースからコピーされた説明:Ordered
このオブジェクトの順序値を取得します。値が高いほど、優先度は低くなります。結果として、最も低い値を持つオブジェクトが最高の優先度を持ちます(サーブレット
load-on-startup
の値に多少似ています)。同じ順序の値は、影響を受けるオブジェクトの任意のソート位置になります。