インターフェース BeanPostProcessor
- 既知のすべてのサブインターフェース:
DestructionAwareBeanPostProcessor, InstantiationAwareBeanPostProcessor, MergedBeanDefinitionPostProcessor, SmartInstantiationAwareBeanPostProcessor
- すべての既知の実装クラス:
AbstractAdvisingBeanPostProcessor, AbstractAdvisorAutoProxyCreator, AbstractAutoProxyCreator, AbstractBeanFactoryAwareAdvisingPostProcessor, AdvisorAdapterRegistrationManager, AnnotationAwareAspectJAutoProxyCreator, AspectJAwareAdvisorAutoProxyCreator, AsyncAnnotationBeanPostProcessor, AutowiredAnnotationBeanPostProcessor, BeanNameAutoProxyCreator, BeanValidationPostProcessor, CommonAnnotationBeanPostProcessor, ConcurrencyLimitBeanPostProcessor, DefaultAdvisorAutoProxyCreator, ImportAwareAotBeanPostProcessor, InfrastructureAdvisorAutoProxyCreator, InitDestroyAnnotationBeanPostProcessor, JmsListenerAnnotationBeanPostProcessor, LoadTimeWeaverAwareProcessor, MethodValidationPostProcessor, PersistenceAnnotationBeanPostProcessor, PersistenceExceptionTranslationPostProcessor, RetryAnnotationBeanPostProcessor, ScheduledAnnotationBeanPostProcessor, ScriptFactoryPostProcessor, ServletContextAwareProcessor, SimpleServletPostProcessor
通常、マーカーインターフェースなどを介して Bean を生成するポストプロセッサーは postProcessBeforeInitialization(Object, String) を実装しますが、プロキシで Bean をラップするポストプロセッサーは通常 postProcessAfterInitialization(Object, String) を実装します。
登録
ApplicationContext は、Bean 定義内の BeanPostProcessor Bean を自動検出し、それらのポストプロセッサーをその後作成される Bean に適用できます。プレーンな BeanFactory を使用すると、ポストプロセッサーをプログラムで登録し、Bean ファクトリで作成されたすべての Bean にポストプロセッサーを適用できます。
@Configuration クラスで @Bean メソッドを介して BeanPostProcessor を登録する場合、他の Bean が完全な後処理の対象とならなくなる可能性がある即時初期化を避けるため、依存関係のない static メソッドを使用することをお勧めします。詳細と例については、@Bean の Javadoc の「BeanPostProcessor を返す @Bean メソッド」セクションを参照してください。
配列
ApplicationContext で自動検出される BeanPostProcessor Bean は、PriorityOrdered および Ordered セマンティクスに従って順序付けられます。対照的に、BeanFactory を使用してプログラムで登録された BeanPostProcessor Bean は、登録順に適用されます。PriorityOrdered または Ordered インターフェースの実装を通じて表される順序付けのセマンティクスは、プログラムで登録されたポストプロセッサーでは無視されます。さらに、@Order アノテーションは BeanPostProcessor Bean については考慮されません。
- 導入:
- 10.10.2003
- 作成者:
- Juergen Hoeller, Sam Brannen
- 関連事項:
方法の概要
修飾子と型メソッド説明postProcessAfterInitialization(ObjectSE bean, StringSE beanName) Bean 初期化コールバック(InitializingBean のafterPropertiesSetまたはカスタム init メソッドなど)の後に、このBeanPostProcessorを新しい Bean インスタンスに適用します。postProcessBeforeInitialization(ObjectSE bean, StringSE beanName) Bean 初期化コールバック(InitializingBean のafterPropertiesSetまたはカスタム init メソッドなど)の前に、このBeanPostProcessorを指定された新しい Bean インスタンスに適用します。
方法の詳細
postProcessBeforeInitialization
default @Nullable ObjectSE postProcessBeforeInitialization(ObjectSE bean, StringSE beanName) throws BeansException Bean 初期化コールバック(InitializingBean のafterPropertiesSetまたはカスタム init メソッドなど)の前に、このBeanPostProcessorを指定された新しい Bean インスタンスに適用します。Bean にはすでにプロパティ値が入力されています。返された Bean インスタンスは、元のラッパーの可能性があります。デフォルトの実装は、指定された
beanをそのまま返します。- パラメーター:
bean- 新しい Bean インスタンスbeanName- Bean の名前- 戻り値:
- 使用する Bean インスタンス。元のインスタンスまたはラップされたインスタンス。
nullの場合、後続の BeanPostProcessors は呼び出されません - 例外:
BeansException- エラーの場合- 関連事項:
postProcessAfterInitialization
default @Nullable ObjectSE postProcessAfterInitialization(ObjectSE bean, StringSE beanName) throws BeansException Bean 初期化コールバック(InitializingBean のafterPropertiesSetまたはカスタム init メソッドなど)の後に、このBeanPostProcessorを新しい Bean インスタンスに適用します。Bean にはすでにプロパティ値が入力されています。返された Bean インスタンスは、元のラッパーの可能性があります。FactoryBean の場合、このコールバックは FactoryBean インスタンスと FactoryBean によって作成されたオブジェクトの両方に対して呼び出されます。ポストプロセッサーは、対応する
bean instanceof FactoryBeanチェックを通じて、FactoryBean または作成されたオブジェクトのどちらに適用するか、あるいは両方に適用するかを決定できます。このコールバックは、他のすべての
BeanPostProcessorコールバックとは異なり、InstantiationAwareBeanPostProcessor.postProcessBeforeInstantiation(Class, String)メソッドによってトリガーされた短絡後にも呼び出されます。デフォルトの実装は、指定された
beanをそのまま返します。- パラメーター:
bean- 新しい Bean インスタンスbeanName- Bean の名前- 戻り値:
- 使用する Bean インスタンス。元のインスタンスまたはラップされたインスタンス。
nullの場合、後続の BeanPostProcessors は呼び出されません - 例外:
BeansException- エラーの場合- 関連事項: