引用文章地址:
https://my.oschina.net/HeliosFly/blog/203902(重点推荐!!!!!)
http://wiki.jikexueyuan.com/project/spring/annotation-based-configuration/spring-autowired-annotation.html
https://www.tianmaying.com/tutorial/spring-auto-wiring
http://www.cnblogs.com/liuzy2014/p/6692781.html
http://blog.csdn.net/baple/article/details/17891755
前言:
@Autowired注解代码定义
@Target({ElementType.CONSTRUCTOR, ElementType.FIELD, ElementType.METHOD,
ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Autowired {
boolean required() default true;
}
从上述定义中,我们可以得出@Autowired注解只有一个属性即required属性,此属性的默认值为true,即默认情况下它要求依赖对象必须存在,如果不存在会出现空指针等错误;如果允许为null,可以设置它required属性为false.其中@Autowired注解和标注的变量的类的set和get方法无关,自动装配的实现并不是依赖set方法的方式实现的.在xml中利用
<property name="" value="" />
这种方式是依赖对应类的set方法的方式实现的 @Autowired注解使用之前首先确定判断一下此处能够使用@Autowired注解.
一、 @Autowired注解使用场景介绍
(1)构造函数
(2)成员变量
(3)Setter方法
(4)普通方法
二、 @Autowired注解所涉及的原理部分
其实在启动spring IoC时,容器自动装载了一个AutowiredAnnotationBeanPostProcessor后置处理器,当容器扫描到@Autowied、@Resource或@Inject时,就会在IoC容器自动查找需要的bean,并装配给该对象的属性
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>