23.spring源码之IOC
上篇文字讲了多种方式的实例化、注解的收集等,接着代码往后走
1.接着看AbstractAutowireCapableBeanFactory类的doCreateBean()方法



2.进入populateBean()方法


2.1进入AutowiredAnnotationBeanPostProcessor类的postProcessproperties()方法
这是一个BeanPostProcess的应用

findAutowiringMetadata()方法就是从缓存中获取InjectionMetadata对象,在上一篇文字注解收集的时候添加到缓存的

进入inject()方法

进入AutowiredAnnotationBeanPostProcessor类的的内部类的inject()方法,分处理字段AutowiredFieldElement和处理方法的AutowiredMethodElement,随便进一个都行,最终都会走一样的流程

进入resolveDependency()方法

进入doResolveDependency()方法


2.1.1@Value注解的处理
进入resolveEmbeddedValue()方法,前面在讲属性文件的解析的时候会把@Value的解析器加入到embeddedValueResolvers容器中

这里调用了resolverStringValue(),会来执行lambda表达式的代码

这里就不详细讲解了,请回顾前面属性文件的文字
2.1.2@Autowired注解处理,进入resolveCandidate()方法
触发getBean()操作,就是上篇文章和现在讲的实例化过程

注意,@Autowired注解注入的的引用类型,都会触发getBean操作进行实例化。
浙公网安备 33010602011771号