注释类型 Autowired


  • @Target({CONSTRUCTOR,METHOD,PARAMETER,FIELD,ANNOTATION_TYPE})
    @Retention(RUNTIME)
    @Documented
    public @interface Autowired
    Marks a constructor, field, setter method, or config method as to be autowired by Spring's dependency injection facilities. This is an alternative to the JSR-330 Inject annotation, adding required-vs-optional semantics.

    Only one constructor of any given bean class may declare this annotation with the 'required' attribute set to true, indicating the constructor to autowire when used as a Spring bean. Furthermore, if the 'required' attribute is set to true, only a single constructor may be annotated with @Autowired. If multiple non-required constructors declare 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 primary/default constructor (if present) will be used. If a class only declares a single constructor to begin with, it will always be used, even if not annotated. 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. Such config methods do not have to be public.

    In the case of a multi-arg constructor or method, the 'required' attribute is applicable to all arguments. Individual parameters may be declared as Java-8-style Optional, overriding the base required semantics.

    In case of a Collection or Map dependency type, the container autowires all beans matching the declared value type. For such purposes, the map keys must be declared as type String which will be resolved to the corresponding bean names. Such a container-provided collection will be ordered, taking into account Ordered/Order values of the target components, otherwise following their registration order in the container. Alternatively, a single matching target bean may also be a generally typed Collection or Map itself, getting injected as such.

    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).

    从以下版本开始:
    2.5
    作者:
    Juergen Hoeller, Mark Fisher
    另请参阅:
    AutowiredAnnotationBeanPostProcessor, Qualifier, Value
    • 可选元素概要

      可选元素 
      修饰符和类型可选元素说明
      booleanrequired
      Declares whether the annotated dependency is required.
    • 元素详细资料

      • required

        boolean required
        Declares whether the annotated dependency is required.

        Defaults to true.

        默认值:
        true