1、springboot启动过程中,由main函数启动一个SpringApplication的类,SpringApplication类负责启动一个ApplicationContext,ApplicationContext负责类的扫描依赖注入等工作。
2、父子容器:springboot启动过程中也有父子容器,比如引入springcloud后就会启动父容器,
3、父容器的启动过程:main函数在创建SpringApplication的过程中会扫描jar包下的spring.factories文件,这个文件中会配置Listener,在创建spring子容器前会先调用所有的Listener,springcloud在Listener中创建新的SpringApplication,并完成spring的扫描工作,扫描完成后为子SpringApplication添加一个新的初始化器(ApplicationContextInitializer),初始化器会在依赖注入之前调用(prepareContext函数中),讲父容器添加到子容器的parent属性上。
注意:Listener是在spring.factories文件中配置的不然启动过程中无法自动获取
网友评论