public class InitDestroyAnnotationBeanPostProcessor extends ObjectSE implements DestructionAwareBeanPostProcessor, MergedBeanDefinitionPostProcessor, PriorityOrdered, SerializableSE
BeanPostProcessor
実装。Spring の InitializingBean
および DisposableBean
コールバックインターフェースの代替アノテーションを可能にします。 このポストプロセッサーがチェックする実際のアノテーション型は、"initAnnotationType"
および "destroyAnnotationType"
プロパティを介して構成できます。必須のアノテーション属性がないため、任意のカスタムアノテーションを使用できます。
init および destroy アノテーションは、公開、パッケージ保護、保護、プライベートなど、どの可視性のメソッドにも適用できます。複数のそのようなメソッドにアノテーションを付けることができますが、それぞれ 1 つの init メソッドと destroy メソッドにのみアノテーションを付けることをお勧めします。
Spring の CommonAnnotationBeanPostProcessor
は、それぞれ init アノテーションと destroy アノテーションとして、そのままの状態で JSR-250 PostConstruct
SE および PreDestroy
SE アノテーションをサポートします。さらに、名前付き Bean のアノテーション駆動型注入のための Resource
SE アノテーションもサポートしています。
修飾子と型 | フィールドと説明 |
---|---|
protected Log | logger |
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
コンストラクターと説明 |
---|
InitDestroyAnnotationBeanPostProcessor() |
修飾子と型 | メソッドと説明 |
---|---|
int | getOrder() このオブジェクトの順序値を取得します。 |
ObjectSE | postProcessAfterInitialization(ObjectSE bean, StringSE beanName) Bean 初期化コールバック(InitializingBean の afterPropertiesSet またはカスタム init メソッドなど)の後に、指定された新しい Bean インスタンスにこの BeanPostProcessor を適用します。 |
void | postProcessBeforeDestruction(ObjectSE bean, StringSE beanName) 破棄する前に、この BeanPostProcessor を指定の Bean インスタンスに適用します。 |
ObjectSE | postProcessBeforeInitialization(ObjectSE bean, StringSE beanName) Bean 初期化コールバック(InitializingBean の afterPropertiesSet またはカスタム init メソッドなど)の前に、この BeanPostProcessor を指定された新しい Bean インスタンスに適用します。 |
void | postProcessMergedBeanDefinition(RootBeanDefinition beanDefinition, ClassSE<?> beanType, StringSE beanName) 指定された Bean の指定されたマージ済み Bean 定義を後処理します。 |
boolean | requiresDestruction(ObjectSE bean) 指定された Bean インスタンスがこのポストプロセッサーによる破棄を必要とするかどうかを判断します。 |
void | setDestroyAnnotationType(ClassSE<? extends AnnotationSE> destroyAnnotationType) チェックする destroy アノテーションを指定して、コンテキストがシャットダウンするときに呼び出す破棄メソッドを示します。 |
void | setInitAnnotationType(ClassSE<? extends AnnotationSE> initAnnotationType) チェックする init アノテーションを指定して、Bean の構成後に呼び出す初期化メソッドを示します。 |
void | setOrder(int order) |
cloneSE, equalsSE, finalizeSE, getClassSE, hashCodeSE, notifySE, notifyAllSE, toStringSE, waitSE, waitSE, waitSE
protected transient Log logger
public void setInitAnnotationType(ClassSE<? extends AnnotationSE> initAnnotationType)
必須のアノテーション属性がないため、任意のカスタムアノテーションを使用できます。デフォルトはありませんが、一般的な選択は JSR-250 PostConstruct
SE アノテーションです。
public void setDestroyAnnotationType(ClassSE<? extends AnnotationSE> destroyAnnotationType)
必須のアノテーション属性がないため、任意のカスタムアノテーションを使用できます。デフォルトはありませんが、一般的な選択は JSR-250 PreDestroy
SE アノテーションです。
public void setOrder(int order)
public int getOrder()
Ordered
値が高いほど、優先度は低くなります。結果として、最も低い値を持つオブジェクトが最高の優先度を持ちます(サーブレット load-on-startup
の値に多少似ています)。
同じ順序の値は、影響を受けるオブジェクトの任意のソート位置になります。
Ordered
の getOrder
Ordered.HIGHEST_PRECEDENCE
, Ordered.LOWEST_PRECEDENCE
public void postProcessMergedBeanDefinition(RootBeanDefinition beanDefinition, ClassSE<?> beanType, StringSE beanName)
MergedBeanDefinitionPostProcessor
MergedBeanDefinitionPostProcessor
の postProcessMergedBeanDefinition
beanDefinition
- Bean のマージされた Bean 定義 beanType
- 管理対象 Bean インスタンスの実際の型 beanName
- Bean の名前 public ObjectSE postProcessBeforeInitialization(ObjectSE bean, StringSE beanName) throws BeansException
BeanPostProcessor
afterPropertiesSet
またはカスタム init メソッドなど)の前に、この BeanPostProcessor を指定された新しい Bean インスタンスに適用します。Bean にはすでにプロパティ値が入力されています。返された Bean インスタンスは、元のラッパーの可能性があります。BeanPostProcessor
の postProcessBeforeInitialization
bean
- 新しい Bean インスタンス beanName
- Bean の名前 null
の場合、後続の BeanPostProcessors は呼び出されません BeansException
- エラーの場合 InitializingBean.afterPropertiesSet()
public ObjectSE postProcessAfterInitialization(ObjectSE bean, StringSE beanName) throws BeansException
BeanPostProcessor
afterPropertiesSet
またはカスタム init メソッドなど)の後に、指定された新しい Bean インスタンスにこの BeanPostProcessor を適用します。Bean にはすでにプロパティ値が入力されています。返された Bean インスタンスは、元のラッパーの可能性があります。FactoryBean の場合、このコールバックは、FactoryBean インスタンスと、FactoryBean によって作成されたオブジェクト(Spring 2.0 以降)の両方に対して呼び出されます。ポストプロセッサーは、対応する bean instanceof FactoryBean
チェックを介して、FactoryBean または作成されたオブジェクトのいずれか、あるいはその両方に適用するかどうかを決定できます。
このコールバックは、他のすべての BeanPostProcessor コールバックとは対照的に、InstantiationAwareBeanPostProcessor.postProcessBeforeInstantiation(java.lang.Class<?>, java.lang.String)
メソッドによってトリガーされた短絡後にも呼び出されます。
BeanPostProcessor
の postProcessAfterInitialization
bean
- 新しい Bean インスタンス beanName
- Bean の名前 null
の場合、後続の BeanPostProcessors は呼び出されません BeansException
- エラーの場合 InitializingBean.afterPropertiesSet()
, FactoryBean
public void postProcessBeforeDestruction(ObjectSE bean, StringSE beanName) throws BeansException
DestructionAwareBeanPostProcessor
DisposableBean の destroy
およびカスタムの destroy メソッドと同様に、このコールバックはファクトリ内のシングルトン Bean(内部 Bean を含む)にのみ適用されます。
DestructionAwareBeanPostProcessor
の postProcessBeforeDestruction
bean
- 破棄される Bean インスタンス beanName
- Bean の名前 BeansException
- エラーの場合 DisposableBean
, AbstractBeanDefinition.setDestroyMethodName(java.lang.String)
public boolean requiresDestruction(ObjectSE bean)
DestructionAwareBeanPostProcessor
注 : 最近追加されたものとしても、この方法は SmartDABPP サブインターフェースではなく DestructionAwareBeanPostProcessor
自体に導入されています。これにより、Spring <4.3 との互換性を維持しながら、既存の DestructionAwareBeanPostProcessor
実装で requiresDestruction
ロジックを簡単に提供できます。また、requiresDestruction
を Spring 5 の Java 8 デフォルトメソッドとして宣言することも簡単です。
DestructionAwareBeanPostProcessor
の実装がこのメソッドの具体的な実装を提供しない場合、Spring の呼び出しメカニズムは、true
(4.3 の前の有効なデフォルト、および Spring 5 の Java 8 メソッドのデフォルトになる)を返すメソッドを暗黙的に想定します。
DestructionAwareBeanPostProcessor
の requiresDestruction
bean
- チェックする Bean インスタンス DestructionAwareBeanPostProcessor.postProcessBeforeDestruction(java.lang.Object, java.lang.String)
が最終的にこの Bean インスタンスのために呼び出されることになっている場合は true
、または不要な場合は false