public class AsyncAnnotationBeanPostProcessor extends AbstractBeanFactoryAwareAdvisingPostProcessor
AsyncAnnotationAdvisor
を公開されたプロキシ(既存の AOP プロキシまたはすべてのターゲットを実装する新しく生成されたプロキシ)に追加することにより、クラスまたはメソッドレベルで Async
アノテーションを運ぶ Bean に非同期呼び出し動作を自動的に適用する Bean ポストプロセッサーインターフェース)。 非同期実行を担当する TaskExecutor
と、メソッドを非同期で呼び出す必要があることを示すアノテーション型を指定できます。アノテーション型が指定されていない場合、このポストプロセッサーは Spring の @Async
アノテーションと EJB 3.1 javax.ejb.Asynchronous
アノテーションの両方を検出します。
void
の戻り値の型を持つメソッドの場合、非同期メソッドの呼び出し中にスローされた例外には、呼び出し元はアクセスできません。これらのケースを処理するために AsyncUncaughtExceptionHandler
を指定できます。
メモ: 基礎となる非同期 advisor は、呼び出しチェーンでできるだけ早く非同期実行に切り替えるために、デフォルトで既存の advisor の前に適用されます。
Async
, AsyncAnnotationAdvisor
, AbstractAdvisingBeanPostProcessor.setBeforeExistingAdvisors(boolean)
, ScheduledAnnotationBeanPostProcessor
, 直列化された形式 修飾子と型 | フィールドと説明 |
---|---|
static StringSE | DEFAULT_TASK_EXECUTOR_BEAN_NAME 取得する TaskExecutor Bean のデフォルト名: "taskExecutor"。 |
protected Log | logger |
advisor, beforeExistingAdvisors
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
コンストラクターと説明 |
---|
AsyncAnnotationBeanPostProcessor() |
修飾子と型 | メソッドと説明 |
---|---|
void | configure(SupplierSE<ExecutorSE> executor, SupplierSE<AsyncUncaughtExceptionHandler> exceptionHandler) 指定されたエグゼキューターと例外ハンドラーのサプライヤーでこのポストプロセッサーを設定し、サプライヤーが解決できない場合は対応するデフォルトを適用します。 |
void | setAsyncAnnotationType(ClassSE<? extends AnnotationSE> asyncAnnotationType) クラスレベルまたはメソッドレベルで検出される「非同期」アノテーション型を設定します。 |
void | setBeanFactory(BeanFactory beanFactory) 所有ファクトリを Bean インスタンスに提供するコールバック。 |
void | setExceptionHandler(AsyncUncaughtExceptionHandler exceptionHandler) 非同期メソッド実行によってスローされたキャッチされない例外を処理するために使用する AsyncUncaughtExceptionHandler を設定します。 |
void | setExecutor(ExecutorSE executor) メソッドを非同期に呼び出すときに使用する Executor SE を設定します。 |
isEligible, prepareProxyFactory
customizeProxyFactory, isEligible, postProcessAfterInitialization, postProcessBeforeInitialization, setBeforeExistingAdvisors
evaluateProxyInterfaces, getOrder, getProxyClassLoader, isConfigurationCallbackInterface, isInternalLanguageInterface, setBeanClassLoader, setOrder, setProxyClassLoader
copyFrom, isExposeProxy, isFrozen, isOpaque, isOptimize, isProxyTargetClass, setExposeProxy, setFrozen, setOpaque, setOptimize, setProxyTargetClass, toString
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, waitSE, waitSE, waitSE
public static final StringSE DEFAULT_TASK_EXECUTOR_BEAN_NAME
TaskExecutor
Bean のデフォルト名: "taskExecutor"。最初の検索は型ごとに行われることに注意してください。これは、コンテキストで複数のエグゼキューター Bean が見つかった場合の単なるフォールバックです。
protected final Log logger
public void configure(@Nullable SupplierSE<ExecutorSE> executor, @Nullable SupplierSE<AsyncUncaughtExceptionHandler> exceptionHandler)
public void setExecutor(ExecutorSE executor)
Executor
SE を設定します。 指定されていない場合は、デフォルトのエグゼキュータ解決が適用されます。コンテキスト内で一意の TaskExecutor
Bean を検索するか、それ以外の場合は "taskExecutor" という名前の Executor
SE Bean を検索します。どちらも解決できない場合は、インターセプター内にローカルのデフォルトのエグゼキュータが作成されます。
public void setExceptionHandler(AsyncUncaughtExceptionHandler exceptionHandler)
AsyncUncaughtExceptionHandler
を設定します。public void setAsyncAnnotationType(ClassSE<? extends AnnotationSE> asyncAnnotationType)
Async
アノテーションと EJB 3.1 javax.ejb.Asynchronous
アノテーションの両方が検出されます。この setter プロパティは、開発者が独自の(Spring 固有ではない)アノテーション型を提供して、メソッド(または特定のクラスのすべてのメソッド)を非同期で呼び出す必要があることを示すために存在します。
asyncAnnotationType
- 目的のアノテーション型 public void setBeanFactory(BeanFactory beanFactory)
BeanFactoryAware
通常の Bean プロパティの設定後、ただし InitializingBean.afterPropertiesSet()
またはカスタム init-method などの初期化コールバックの前に呼び出されます。
BeanFactoryAware
の setBeanFactory
AbstractBeanFactoryAwareAdvisingPostProcessor
の setBeanFactory
beanFactory
- 所有 BeanFactory(非 null
)。Bean は、ファクトリのメソッドをすぐに呼び出すことができます。BeanInitializationException