1.CommonAnnotationBeanPostProcessor是主要逻辑类
2.CommonAnnotationBeanPostProcessor实现接口InstantiationAwareBeanPostProcessor
在bean的实例化过程中,执行populateBean方法中会调用InstantationAwareBeanPostProcessor的postProcessProperties方法
3.CommonAnnotationBeanPostProcessor还实现了MergedBeanDefinitionPostProcessor接口
在bean的实例化过程中,执行doCreateBean方法中会调用MergedBeanDefinitionPostProcessor的postProcessMergedBeanDefinition方法,会填充RootBeanDefinition
4.底层调用逻辑
(1)如果指定@Resource中的name值,则调用beanFactory.getBean(String name,Class<T> requiredType)
(2)如果不指定@Resource中的name值,则按字段名称在beanFactory中搜索存不存在相应的beanDefinition,
不存在则按类型查找,调用ListableBeanFactory的getBeanNamesForType()方法,存在多个则要去找@Primary标记的对象,否则报错NoUniqueBeanDefinitionException
存在,则就按字段名称依赖查询,调用beanFactory.getBean(String name,Class<T> requiredType)