Spring全家桶现在是java开发最主流的选择,本文主要分析Spring ioc技术的前半部分:ioc容器的创建过程。本人不是大佬,这篇文章不是研究性质的文章,只能算是个Spring的学习笔记,不足之处恳请大家指正。本文基于最新的Spring5来阅读ioc的源码。
本文基于最新的注解版ioc容器的创建,当你new AnnotationConfigApplicationContext时,Spring底层执行了三行代码
下面一行一行分析:
this()会调用当前类的无参构造器(注意:此方法会调用父类的无参构造器
这个方法非常重要,defaultListableBeanFactory就是我们需要的ioc容器)
下面分析一下AnnotationConfigApplicationContext这个类的构造器的创建过程
第一行是重点,至于第二行的scanner看源码注释是用来配置扫描器的(扫描被@Component,@Repository,@Service,@Controller注解标记的类)
建议大家在看源码时多看doc文档,这样可以抓住重点,一看就知道这个scanner和ioc的创建无太大关系,所以只关注第一行
在创建annotationBeanDefinitionReader的时候会先创建spring 的environment,直接断点进去就知道创建的是
StandardEnvironment,看这个类的doc文档知道这个类是用来保存