java.lang.Objectorg.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor
org.springframework.context.annotation.CommonAnnotationBeanPostProcessor
All Implemented Interfaces:
BeanFactoryAware, Serializable, InstantiationAwareBeanPostProcessor, PriorityOrdered, DestructionAwareBeanPostProcessor, MergedBeanDefinitionPostProcessor
javax.annotation package. These common Java
annotations are supported in many Java EE 5 technologies (e.g. JSF 1.2),
as well as in Java 6's JAX-WS.
This post-processor includes support for the javax.annotation.PostConstruct and javax.annotation.PreDestroy annotations - as init annotation and destroy annotation, respectively - through inheriting from InitDestroyAnnotationBeanPostProcessor with pre-configured annotation types.
The central element is the javax.annotation.Resource annotation
for annotation-driven injection of named beans, by default from the containing
Spring BeanFactory, with only mappedName references resolved in JNDI.
The "alwaysUseJndiLookup" flag enforces JNDI lookups
equivalent to standard Java EE 5 resource injection for name references
and default names as well. The target beans can be simple POJOs, with no special
requirements other than the type having to match.
The JAX-WS javax.xml.ws.WebServiceRef annotation is supported too, analogous to javax.annotation.Resource but with the capability of creating specific JAX-WS service endpoints. This may either point to an explicitly defined resource by name or operate on a locally specified JAX-WS service class. Finally, this post-processor also supports the EJB 3 javax.ejb.EJB annotation, analogous to javax.annotation.Resource as well, with the capability to specify both a local bean name and a global JNDI name for fallback retrieval. The target beans can be plain POJOs as well as EJB 3 Session Beans in this case.
The common annotations supported by this post-processor are available in Java 6 (JDK 1.6) as well as in Java EE 5 (which provides a standalone jar for its common annotations as well, allowing for use in any Java 5 based application). Hence, this post-processor works out of the box on JDK 1.6, and requires the JSR-250 API jar (and optionally the JAX-WS API jar and/or the EJB 3 API jar) to be added to the classpath on JDK 1.5 (when running outside of Java EE 5).
For default usage, resolving resource names as Spring bean names, simply define the following in your application context:
<bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor"/>For direct JNDI access, resolving resource names as JNDI resource references within the Java EE application's "java:comp/env/" namespace, use the following:
<bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor"> <property name="alwaysUseJndiLookup" value="true"/> </bean>
mappedName references will always be resolved in JNDI,
allowing for global JNDI names (including "java:" prefix) as well. The
"alwaysUseJndiLookup" flag just affects name references and
default names (inferred from the field name / property name).
NOTE: A default CommonAnnotationBeanPostProcessor will be registered by the "context:annotation-config" and "context:component-scan" XML tags. Remove or turn off the default annotation configuration there if you intend to specify a custom CommonAnnotationBeanPostProcessor bean definition!
Juergen - Hoeller2.5 - | Nested Class Summary: | ||
|---|---|---|
| abstract protected class | CommonAnnotationBeanPostProcessor.LookupElement | Class representing generic injection information about an annotated field or setter method, supporting @Resource and related annotations. |
| Fields inherited from org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor: |
|---|
| logger |
| Constructor: |
|---|
|
| Method from org.springframework.context.annotation.CommonAnnotationBeanPostProcessor Summary: |
|---|
| autowireResource, getResource, ignoreResourceType, postProcessAfterInstantiation, postProcessBeforeInstantiation, postProcessMergedBeanDefinition, postProcessPropertyValues, setAlwaysUseJndiLookup, setBeanFactory, setFallbackToDefaultTypeMatch, setJndiFactory, setResourceFactory |
| Methods from org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor: |
|---|
| getOrder, postProcessAfterInitialization, postProcessBeforeDestruction, postProcessBeforeInitialization, postProcessMergedBeanDefinition, setDestroyAnnotationType, setInitAnnotationType, setOrder |
| Methods from java.lang.Object: |
|---|
| equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Method from org.springframework.context.annotation.CommonAnnotationBeanPostProcessor Detail: |
|---|
|
|
@Resource
annotations.
By default, the |
|
|
|
|
name attributes and default names.
Default is "false": Resource names are used for Spring bean lookups in the
containing BeanFactory; only |
|
Default is "true". Switch this flag to "false" in order to enforce a by-name lookup in all cases, throwing an exception in case of no name match. |
@Resource /
@WebServiceRef / @EJB annotated fields and setter methods,
for mappedName attributes that point directly into JNDI.
This factory will also be used if "alwaysUseJndiLookup" is set to "true" in order
to enforce JNDI lookups even for name attributes and default names.
The default is a org.springframework.jndi.support.SimpleJndiBeanFactory for JNDI lookup behavior equivalent to standard Java EE 5 resource injection. |
@Resource /
@WebServiceRef / @EJB annotated fields and setter methods,
for name attributes and default names.
The default is the BeanFactory that this post-processor is defined in, if any, looking up resource names as Spring bean names. Specify the resource factory explicitly for programmatic usage of this post-processor. Specifying Spring's org.springframework.jndi.support.SimpleJndiBeanFactory
leads to JNDI lookup behavior equivalent to standard Java EE 5 resource injection,
even for |