public abstract class AsyncExecutionAspectSupport extends java.lang.Object implements BeanFactoryAware
org.springframework.scheduling.annotation.AnnotationAsyncExecutionInterceptor や org.springframework.scheduling.aspectj.AnnotationAsyncExecutionAspect などの非同期メソッド実行アスペクトの基本クラス。 メソッドごとにエグゼキューター修飾をサポートします。AsyncExecutionAspectSupport オブジェクトはデフォルトの Executor で構築する必要がありますが、個々のメソッドは、アノテーション属性などを使用して、特定の Executor Bean を実行時に使用するようにさらに修飾できます。
| 修飾子と型 | フィールドと説明 |
|---|---|
static java.lang.String | DEFAULT_TASK_EXECUTOR_BEAN_NAME 取得する TaskExecutor Bean のデフォルト名: "taskExecutor"。 |
protected Log | logger |
| コンストラクターと説明 |
|---|
AsyncExecutionAspectSupport(java.util.concurrent.Executor defaultExecutor) デフォルトの AsyncUncaughtExceptionHandler で新しいインスタンスを作成します。 |
AsyncExecutionAspectSupport(java.util.concurrent.Executor defaultExecutor, AsyncUncaughtExceptionHandler exceptionHandler) 指定された例外ハンドラーで新しい AsyncExecutionAspectSupport を作成します。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
void | configure(java.util.function.Supplier<java.util.concurrent.Executor> defaultExecutor, java.util.function.Supplier<AsyncUncaughtExceptionHandler> exceptionHandler) 指定されたエグゼキューターと例外ハンドラーのサプライヤーでこのアスペクトを設定し、サプライヤーが解決できない場合は対応するデフォルトを適用します。 |
protected AsyncTaskExecutor | determineAsyncExecutor(java.lang.reflect.Method method) 特定のメソッドを実行するときに使用する特定のエグゼキューターを決定します。 |
protected java.lang.Object | doSubmit(java.util.concurrent.Callable<java.lang.Object> task, AsyncTaskExecutor executor, java.lang.Class<?> returnType) 選択したエグゼキューターで特定のタスクを実際に実行するためのデリゲート。 |
protected java.util.concurrent.Executor | findQualifiedExecutor(BeanFactory beanFactory, java.lang.String qualifier) 指定された修飾子のターゲットエグゼキューターを取得します。 |
protected java.util.concurrent.Executor | getDefaultExecutor(BeanFactory beanFactory) このアドバイスインスタンスのデフォルトのエグゼキューターを取得またはビルドします。 |
protected abstract java.lang.String | getExecutorQualifier(java.lang.reflect.Method method) 指定された非同期メソッドを実行するときに使用されるエグゼキューターの修飾子または Bean 名を返します。これは通常、アノテーション属性の形式で指定されます。 |
protected void | handleError(java.lang.Throwable ex, java.lang.reflect.Method method, java.lang.Object... params) 指定された Method を非同期で呼び出している間にスローされた致命的なエラーを処理します。 |
void | setBeanFactory(BeanFactory beanFactory) 修飾子でエグゼキューターを検索するとき、またはデフォルトのエグゼキュータールックアップアルゴリズムに依存するときに使用する BeanFactory を設定します。 |
void | setExceptionHandler(AsyncUncaughtExceptionHandler exceptionHandler)void 戻り値型で非同期メソッドを呼び出すことによってスローされた例外を処理するために使用する AsyncUncaughtExceptionHandler を提供します。 |
void | setExecutor(java.util.concurrent.Executor defaultExecutor) 非同期メソッドの実行時に使用するエグゼキューターを指定します。 |
public static final java.lang.String DEFAULT_TASK_EXECUTOR_BEAN_NAME
TaskExecutor Bean のデフォルト名: "taskExecutor"。最初の検索は型ごとに行われることに注意してください。これは、コンテキストで複数のエグゼキューター Bean が見つかった場合の単なるフォールバックです。
protected final Log logger
public AsyncExecutionAspectSupport(@Nullable java.util.concurrent.Executor defaultExecutor)
AsyncUncaughtExceptionHandler で新しいインスタンスを作成します。defaultExecutor - 委譲先の Executor (通常は Spring AsyncTaskExecutor または ExecutorService)。ただし、非同期メソッドの修飾子を介してより具体的なエグゼキューターがリクエストされた場合は、エグゼキューターは呼び出し時に、囲んでいる Bean ファクトリに対して検索されます。public AsyncExecutionAspectSupport(@Nullable java.util.concurrent.Executor defaultExecutor, AsyncUncaughtExceptionHandler exceptionHandler)
AsyncExecutionAspectSupport を作成します。defaultExecutor - 委譲先の Executor (通常は Spring AsyncTaskExecutor または ExecutorService)。ただし、非同期メソッドの修飾子を介してより具体的なエグゼキューターがリクエストされた場合は、エグゼキューターは呼び出し時に、囲んでいる Bean ファクトリに対して検索されます。exceptionHandler - 使用する AsyncUncaughtExceptionHandlerpublic void configure(@Nullable java.util.function.Supplier<java.util.concurrent.Executor> defaultExecutor, @Nullable java.util.function.Supplier<AsyncUncaughtExceptionHandler> exceptionHandler)
public void setExecutor(java.util.concurrent.Executor defaultExecutor)
defaultExecutor - 委譲先の Executor (通常は Spring AsyncTaskExecutor または ExecutorService)。ただし、非同期メソッドの修飾子を介してより具体的なエグゼキューターがリクエストされた場合は、エグゼキューターは呼び出し時に、囲んでいる Bean ファクトリに対して検索されます。getExecutorQualifier(Method), setBeanFactory(BeanFactory), getDefaultExecutor(BeanFactory)public void setExceptionHandler(AsyncUncaughtExceptionHandler exceptionHandler)
void 戻り値型で非同期メソッドを呼び出すことによってスローされた例外を処理するために使用する AsyncUncaughtExceptionHandler を提供します。public void setBeanFactory(BeanFactory beanFactory)
BeanFactory を設定します。BeanFactoryAware 内の setBeanFactory beanFactory - 所有 BeanFactory(非 null)。Bean は、ファクトリのメソッドをすぐに呼び出すことができます。findQualifiedExecutor(BeanFactory, String), getDefaultExecutor(BeanFactory)@Nullable protected AsyncTaskExecutor determineAsyncExecutor(java.lang.reflect.Method method)
AsyncListenableTaskExecutor 実装を返す必要があります。null、ただしデフォルトのエグゼキュータが利用できない場合)@Nullable protected abstract java.lang.String getExecutorQualifier(java.lang.reflect.Method method)
null を返すことは、特定の実行プログラムが指定されておらず、デフォルトの実行プログラムを使用する必要があることを示しています。method - エグゼキューター修飾子メタデータをインスペクションするメソッド nulldetermineAsyncExecutor(Method), findQualifiedExecutor(BeanFactory, String)@Nullable protected java.util.concurrent.Executor findQualifiedExecutor(@Nullable BeanFactory beanFactory, java.lang.String qualifier)
qualifier - 解決する修飾子 null がない場合 getExecutorQualifier(Method)@Nullable protected java.util.concurrent.Executor getDefaultExecutor(@Nullable BeanFactory beanFactory)
デフォルトの実装では、コンテキスト内で一意の TaskExecutor Bean を検索するか、それ以外の場合は "taskExecutor" という名前の Executor Bean を検索します。どちらも解決できない場合、この実装は null を返します。
beanFactory - デフォルトのエグゼキューター検索に使用する BeanFactorynull findQualifiedExecutor(BeanFactory, String), DEFAULT_TASK_EXECUTOR_BEAN_NAME@Nullable protected java.lang.Object doSubmit(java.util.concurrent.Callable<java.lang.Object> task, AsyncTaskExecutor executor, java.lang.Class<?> returnType)
task - 実行するタスク executor - 選ばれた執行者 returnType - 宣言された戻り型 (潜在的に Future バリアント)Future ハンドル)protected void handleError(java.lang.Throwable ex,
java.lang.reflect.Method method,
java.lang.Object... params)
throws java.lang.ExceptionMethod を非同期で呼び出している間にスローされた致命的なエラーを処理します。 メソッドの戻り値の型が Future オブジェクトの場合、元の例外を上位レベルにスローするだけで伝播できます。ただし、他のすべての場合、例外はクライアントに返送されません。後者の場合、現在の AsyncUncaughtExceptionHandler がそのような例外を管理するために使用されます。
ex - 処理する例外 method - 呼び出されたメソッド params - メソッドの呼び出しに使用されるパラメーター java.lang.Exception