@Autowired注解,帮助我们根据类型匹配去自动注入。
注入方式分为以下几种:
1.构造方法注入
2.setter方法注入
3.字段注入
4.类型数组/集合对象的字段或方法注入
一.@Autowired自动装配原理分析
主要分析AutowiredAnotationBeanPostProcessor类,
AutowiredAnotationBeanPostProcessor间接实现了InstantialtionAwareBeanPostProcessor和MergedBeanDefinitionPostProcessor两个BeanPostProcessor后置处理器接口。
1.MergedBeanDefinitionPostProcessor:
合并bean的定义信息
2.InstantialtionAwareBeanPostProcessor:在bean实例化前后和bean设置属性时执行后置处理器。
重点关注AutowiredAnotationBeanPostProcessor的postProcessMergedBeanDeginition()方法和
AutowiredAnotationBeanPostProcessor的postProcessProties()方法。
二.AutowiredAnnotationBeanPostProcessor#postProcessMergedBeanDeginition()
AutowiredAnnotationBeanPostProcessor后置处理器主要负责了对添加@Autowired和@Value注解的元素实现自动装配。找出需要装配的元素是在postProcessMergedBeanDeginition()中实现的
总结:是在AutowiredAnotationBeanPostProcessor后置处理器中实现的,主要分为两个步骤,找出和注入。
找出是postProcessMergedBeanDeginition()方法方法里实现的
注入是postProcessProties()方法里实现的