前言在之前的文章:创建IoC容器的几种方式中,介绍了四种方式。这里我们以AnnotationConfigApplicationContext为例跟进代码,看看IoC的启动流程。1、从JavaConfig加载配置的AnnotationConfigApplicationContext的启动方法如下:进入后发现构造其实就是当前调用的无参构造。所以也可以在启动时直接声明无参结构体,改写如下:System.out.println(context.getBean(UserComponent.class));}}今天我们就来研究这部分无参构造的逻辑!无参构造的StartupStep是5.3新增的类,看代码注释的意思Yes:表示用来记录启动过程中的一些指标信息。暂时不要做研究。主要研究红框部分!注意这块不只代表红框部分!因为AnnotationConfigApplicationContext继承了GenericApplicationContext,所以会先执行父类的构造方法。所以这里会创建一个DefaultListableBeanFactory的容器。DefaultListableBeanFactoryDe??faultListableBeanFactoryUML虽然Spring的BeanFactory定义了容器的基本概念,接口方法等,但是DefaultListableBeanFactory是一个具体的容器,确实可以说是新的,当然也可以暂且称之为bean工厂。我们来看看DefaultListableBeanFactory里面有什么?DefaultListableBeanFactory中初始化了很多参数,重点是以下两个参数:/**Mapofbeandefinitionobjects,keyedbybeanname.*///BeanDefinition的存储Mapwherekey为beanNameprivatefinalMap
