that autowires annotated fields, setter methods and arbitrary config methods.
Such members to be injected are detected through a Java 5 annotation: by default,
Spring's @Autowired and @Value annotations.
Also supports JSR-330's @Inject annotation,
if available, as a direct alternative to Spring's own @Autowired.
Only one constructor (at max) of any given bean class may carry this
annotation with the 'required' parameter set to true,
indicating the constructor to autowire when used as a Spring bean.
If multiple non-required constructors carry the annotation, they
will be considered as candidates for autowiring. The constructor with
the greatest number of dependencies that can be satisfied by matching
beans in the Spring container will be chosen. If none of the candidates
can be satisfied, then a default constructor (if present) will be used.
An annotated constructor does not have to be public.
Fields are injected right after construction of a bean, before any
config methods are invoked. Such a config field does not have to be public.
Config methods may have an arbitrary name and any number of arguments; each of
those arguments will be autowired with a matching bean in the Spring container.
Bean property setter methods are effectively just a special case of such a
general config method. Config methods do not have to be public.
Note: A default AutowiredAnnotationBeanPostProcessor 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 AutowiredAnnotationBeanPostProcessor bean definition.
NOTE: Annotation injection will be performed before XML injection;
thus the latter configuration will override the former for properties wired through
In addition to regular injection points as discussed above, this post-processor
also handles Spring's @Lookup annotation which identifies lookup
methods to be replaced by the container at runtime. This is essentially a type-safe
version of getBean(Class, args) and getBean(String, args),
See @Lookup's javadoc for details.
Juergen Hoeller, Mark Fisher, Stephane Nicoll, Sebastien Deleuze
Post-process the given property values before the factory applies them
to the given bean. Allows for checking whether all dependencies have been
satisfied, for example based on a "Required" annotation on bean property setters.
Also allows for replacing the property values to apply, typically through
creating a new MutablePropertyValues instance based on the original PropertyValues,
adding or removing specific values.
The default implementation returns the given pvs as-is.