Spring boot 2 源码分析 四 启动流程04

五、准备容器

      将启动类注入容器,后续开启自动化配置

5.1  context.setEnvironment(environment);   给容器context设置环境,包括各种变量

5.2  postProcessApplicationContext(context); 执行后置处理动作

       

    这里默认不执行任何逻辑,因为beanNameGeneratorresourceLoader默认为空。之所以这样做,是springBoot留给我们的扩展处理方式,类似于这样的扩展,spring中也有很多。

5.3 调用 applyInitializers(context)  对容器进行初始化: 本质上是给ConfigurableApplicationContext下面的子context,增加对应的监听器applicationListener

5.4 listeners.contextPrepared(context); 也是一个空函数,什么也不做

     

 5.5 给容器context注册具体的单例singleton

 5.6 Set<Object> sources = getAllSources(); 获取所有启动容器所需要的配置,并且校验配置不能为空

 5.7  load(context, sources.toArray(new Object[0]));  加载启动类,注入到容器

      

  给loader设置beanNameGenerator,resourceLoader和environment,然后调用load()方法加载所有的source

按照source不同的类型,分别加载class,resource,package,charSequence,其余的类型就抛出异常不支持

最后listeners.contextLoaded(context); 监听器处理容器加载启动类,配置文件等完成的事件; 也就是容器准备完成的事件

load()方法加载, 先把bean包装成为beanDefinition,然后添加到容器的beanDefinitionMap中

 

 

      

 

 

    

      

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值