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以及是否允许循环依赖