クラス 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 ExecutorSEgetDefaultExecutor(BeanFactory beanFactory) この実装は、コンテキスト内で一意のTaskExecutorBean を検索するか、それ以外の場合は "taskExecutor" という名前のExecutorSE Bean を検索します。protected StringSEgetExecutorQualifier(MethodSE method) 特定のメソッドを実行するときに使用する特定のエグゼキューターの修飾子を取得します。intgetOrder()このオブジェクトの順序値を取得します。invoke(MethodInvocation invocation) 指定されたメソッド呼び出しをインターセプトし、メソッドの実際の呼び出しを正しいタスクエグゼキューターに送信して、呼び出し元にすぐに戻ります。クラス org.springframework.aop.interceptor.AsyncExecutionAspectSupport から継承されたメソッド
configure, determineAsyncExecutor, doSubmit, findQualifiedExecutor, handleError, setBeanFactory, setExceptionHandler, setExecutor
コンストラクターの詳細
AsyncExecutionInterceptor
デフォルトのAsyncUncaughtExceptionHandlerで新しいインスタンスを作成します。- パラメーター:
defaultExecutor- 委譲先のExecutorSE (通常は SpringAsyncTaskExecutorまたはExecutorServiceSE )。それ以外の場合は、このインターセプターのローカルエグゼキューターがビルドされます
AsyncExecutionInterceptor
public AsyncExecutionInterceptor(@Nullable ExecutorSE defaultExecutor, AsyncUncaughtExceptionHandler exceptionHandler) 新しいAsyncExecutionInterceptorを作成します。- パラメーター:
defaultExecutor- 委譲先のExecutorSE (通常は SpringAsyncTaskExecutorまたはExecutorServiceSE )。それ以外の場合は、このインターセプターのローカルエグゼキューターがビルドされますexceptionHandler- 使用するAsyncUncaughtExceptionHandler
メソッドの詳細
invoke
指定されたメソッド呼び出しをインターセプトし、メソッドの実際の呼び出しを正しいタスクエグゼキューターに送信して、呼び出し元にすぐに戻ります。- 次で指定:
- インターフェース
MethodInterceptorのinvoke - パラメーター:
invocation- インターセプトして非同期にするメソッド- 戻り値:
- 元のメソッドが
Futureを返す場合はFutureSE。それ以外の場合はnull。 - 例外:
ThrowableSE- インターセプターまたはターゲットオブジェクトが例外をスローする場合
getExecutorQualifier
特定のメソッドを実行するときに使用する特定のエグゼキューターの修飾子を取得します。このメソッドのデフォルトの実装は、事実上ノーオペレーションです。
サブクラスはこのメソッドをオーバーライドして、たとえば指定されたメソッドのアノテーションを介して修飾子情報を抽出するためのサポートを提供できます。
- 次で指定:
- クラス
AsyncExecutionAspectSupportのgetExecutorQualifier - パラメーター:
method- エグゼキューター修飾子メタデータをインスペクションするメソッド- 戻り値:
- 常に
null - 導入:
- 3.1.2
- 関連事項:
getDefaultExecutor
この実装は、コンテキスト内で一意のTaskExecutorBean を検索するか、それ以外の場合は "taskExecutor" という名前のExecutorSE Bean を検索します。どちらも解決できない場合 (たとえば、BeanFactoryがまったく構成されていない場合)、デフォルトが見つからない場合、この実装はローカル使用のために新しく作成されたSimpleAsyncTaskExecutorインスタンスにフォールバックします。- オーバーライド:
- クラス
AsyncExecutionAspectSupportのgetDefaultExecutor - パラメーター:
beanFactory- デフォルトのエグゼキューター検索に使用する BeanFactory- 戻り値:
- デフォルトのエグゼキューター、または使用可能なものがなければ
null - 関連事項:
getOrder
public int getOrder()インターフェースからコピーされた説明:Orderedこのオブジェクトの順序値を取得します。値が高いほど、優先度は低くなります。結果として、最も低い値を持つオブジェクトが最高の優先度を持ちます(サーブレット
load-on-startupの値に多少似ています)。同じ順序の値は、影響を受けるオブジェクトの任意のソート位置になります。