インターフェース 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

public interface BeanPostProcessor
新しい Bean インスタンスのカスタム変更を可能にするファクトリフック — たとえば、マーカーインターフェースのチェックや、Bean をプロキシでラップするなどです。

通常、マーカーインターフェースなどを介して 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
関連事項:
  • 方法の概要

    修飾子と型
    メソッド
    説明
    Bean 初期化コールバック(InitializingBean の afterPropertiesSet またはカスタム init メソッドなど)のに、この BeanPostProcessor を新しい Bean インスタンス適用します。
    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 - エラーの場合
      関連事項: