spring源码学习(二)初始化ioc容器

1、在创建ioc容器前的准备工作

 

 

 准备刷新前的工作

  1)、记录启动时间

  2)、设置容器关闭状态

  3)、设置容器活跃状态

  4)、初始化属性源(本类是空实现,在子类中比如staticWebApplicationContext中会对servlet资源进行初始化)

  5)、验证必须的属性

    我们可以自己实现一个子类设置必要的环境属性,必须的环境属性就是在这里验证的,当环境中没有abc属性上就会报错

 

2、准备工作完成之后,开始正式创建容器了

 

   1)、创建之前如果存在容器了就需要销毁原来的容器,保证每次刷新得到都是新的容器(保证当前上下文只有一个ioc容器,而不是指的整个应用只有一个beanfactory)

  2)、创建新的beanfactory,在父类中AbstractAutowireCapableBeanFactory会忽略三个aware接口,而这三个接口在bean的初始化的时候执行invokeAwareMethod时会进行设置

 

    

 

   3)、自定义beanfactory;实际上这里边就干了两件事情设置是否允许覆盖beanDefinition以及是否允许循环依赖

    

 


 

posted @ 2022-07-06 23:59  搬砖党路过  阅读(48)  评论(0编辑  收藏  举报