@Target(value={CONSTRUCTOR,METHOD,PARAMETER,FIELD,ANNOTATION_TYPE}) @Retention(value=RUNTIME) @Documented public @interface Autowired
Only one constructor (at max) of any given bean class may carry this annotation, indicating the constructor to autowire when used as a Spring bean. Such a 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. Such config methods do not have to be public.
In the case of multiple argument methods, the 'required' parameter is applicable for all arguments.
In case of a Collection
or Map
dependency type, the container will autowire all beans matching the
declared value type. In case of a Map, the keys must be declared as
type String and will be resolved to the corresponding bean names.
Note that actual injection is performed through a
BeanPostProcessor
which in turn means that you cannot
use @Autowired
to inject references into
BeanPostProcessor
or
BeanFactoryPostProcessor
types. Please consult the javadoc for the AutowiredAnnotationBeanPostProcessor
class (which, by default, checks for the presence of this annotation).
AutowiredAnnotationBeanPostProcessor
,
Qualifier
,
Value
Modifier and Type | Optional Element and Description |
---|---|
boolean |
required
Declares whether the annotated dependency is required.
|