public class

InitDestroyAnnotationBeanPostProcessor

extends Object
implements Serializable DestructionAwareBeanPostProcessor MergedBeanDefinitionPostProcessor PriorityOrdered
java.lang.Object
   ↳ org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor
Known Direct Subclasses

Class Overview

BeanPostProcessor implementation that invokes annotated init and destroy methods. Allows for an annotation alternative to Spring's InitializingBean and DisposableBean callback interfaces.

The actual annotation types that this post-processor checks for can be configured through the "initAnnotationType" and "destroyAnnotationType" properties. Any custom annotation can be used, since there are no required annotation attributes.

Init and destroy annotations may be applied to methods of any visibility: public, package-protected, protected, or private. Multiple such methods may be annotated, but it is recommended to only annotate one single init method and destroy method, respectively.

Spring's CommonAnnotationBeanPostProcessor supports the JSR-250 javax.annotation.PostConstruct and javax.annotation.PreDestroy annotations out of the box, as init annotation and destroy annotation, respectively. Furthermore, it also supports the javax.annotation.Resource annotation for annotation-driven injection of named beans.

Summary

[Expand]
Inherited Constants
From interface org.springframework.core.Ordered
Fields
protected Log logger
Public Constructors
InitDestroyAnnotationBeanPostProcessor()
Public Methods
int getOrder()
Return the order value of this object, with a higher value meaning greater in terms of sorting.
Object postProcessAfterInitialization(Object bean, String beanName)
Apply this BeanPostProcessor to the given new bean instance after any bean initialization callbacks (like InitializingBean's afterPropertiesSet or a custom init-method).
void postProcessBeforeDestruction(Object bean, String beanName)
Apply this BeanPostProcessor to the given bean instance before its destruction.
Object postProcessBeforeInitialization(Object bean, String beanName)
Apply this BeanPostProcessor to the given new bean instance before any bean initialization callbacks (like InitializingBean's afterPropertiesSet or a custom init-method).
void postProcessMergedBeanDefinition(RootBeanDefinition beanDefinition, Class beanType, String beanName)
void setDestroyAnnotationType(Class<? extends Annotation> destroyAnnotationType)
Specify the destroy annotation to check for, indicating destruction methods to call when the context is shutting down.
void setInitAnnotationType(Class<? extends Annotation> initAnnotationType)
Specify the init annotation to check for, indicating initialization methods to call after configuration of a bean.
void setOrder(int order)
[Expand]
Inherited Methods
From class java.lang.Object
From interface org.springframework.beans.factory.config.BeanPostProcessor
From interface org.springframework.beans.factory.config.DestructionAwareBeanPostProcessor
From interface org.springframework.beans.factory.support.MergedBeanDefinitionPostProcessor
From interface org.springframework.core.Ordered

Fields

protected Log logger

Also: SpringBeans

Public Constructors

public InitDestroyAnnotationBeanPostProcessor ()

Also: SpringBeans

Public Methods

public int getOrder ()

Also: SpringBeans

Return the order value of this object, with a higher value meaning greater in terms of sorting.

Normally starting with 0, with Integer.MAX_VALUE indicating the greatest value. Same order values will result in arbitrary positions for the affected objects.

Higher values can be interpreted as lower priority. As a consequence, the object with the lowest value has highest priority (somewhat analogous to Servlet "load-on-startup" values).

Returns
  • the order value

public Object postProcessAfterInitialization (Object bean, String beanName)

Also: SpringBeans

Apply this BeanPostProcessor to the given new bean instance after any bean initialization callbacks (like InitializingBean's afterPropertiesSet or a custom init-method). The bean will already be populated with property values. The returned bean instance may be a wrapper around the original.

In case of a FactoryBean, this callback will be invoked for both the FactoryBean instance and the objects created by the FactoryBean (as of Spring 2.0). The post-processor can decide whether to apply to either the FactoryBean or created objects or both through corresponding bean instanceof FactoryBean checks.

This callback will also be invoked after a short-circuiting triggered by a postProcessBeforeInstantiation(Class, String) method, in contrast to all other BeanPostProcessor callbacks.

Parameters
bean the new bean instance
beanName the name of the bean
Returns
  • the bean instance to use, either the original or a wrapped one; if null, no subsequent BeanPostProcessors will be invoked

public void postProcessBeforeDestruction (Object bean, String beanName)

Also: SpringBeans

Apply this BeanPostProcessor to the given bean instance before its destruction. Can invoke custom destruction callbacks.

Like DisposableBean's destroy and a custom destroy method, this callback just applies to singleton beans in the factory (including inner beans).

Parameters
bean the bean instance to be destroyed
beanName the name of the bean

public Object postProcessBeforeInitialization (Object bean, String beanName)

Also: SpringBeans

Apply this BeanPostProcessor to the given new bean instance before any bean initialization callbacks (like InitializingBean's afterPropertiesSet or a custom init-method). The bean will already be populated with property values. The returned bean instance may be a wrapper around the original.

Parameters
bean the new bean instance
beanName the name of the bean
Returns
  • the bean instance to use, either the original or a wrapped one; if null, no subsequent BeanPostProcessors will be invoked

public void postProcessMergedBeanDefinition (RootBeanDefinition beanDefinition, Class beanType, String beanName)

Also: SpringBeans

public void setDestroyAnnotationType (Class<? extends Annotation> destroyAnnotationType)

Also: SpringBeans

Specify the destroy annotation to check for, indicating destruction methods to call when the context is shutting down.

Any custom annotation can be used, since there are no required annotation attributes. There is no default, although a typical choice is the JSR-250 javax.annotation.PreDestroy annotation.

public void setInitAnnotationType (Class<? extends Annotation> initAnnotationType)

Also: SpringBeans

Specify the init annotation to check for, indicating initialization methods to call after configuration of a bean.

Any custom annotation can be used, since there are no required annotation attributes. There is no default, although a typical choice is the JSR-250 javax.annotation.PostConstruct annotation.

public void setOrder (int order)

Also: SpringBeans