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操作进行实例化。

 

posted @ 2021-08-22 20:43  福福猿  阅读(32)  评论(0)    收藏  举报