调用refresh方法 中 先执行 prepareReresh 方法
点进去看源码
接着往下执行
初始话属性设置 点进去看源码 发现是空实现方法 专门给子类继承实现,自定义定制属性
检验属性是否合法创建监听容器和事件容器_
1.preparerefresh 的主要工作就是创建设置一些属性,建炎属性 合法性 并且
创建容器
接下来,获取bean工厂
刷新bean工厂,就是创建 一个 beanfactory对象 并给 beanfactory设置一个序列号
并且放回刚刚genaricbeanfactory创建的 对象
第三步就是 beanfactory的欲准备工作 对其进行一些属性设置,点进去看源码
设置类加载器
解析器,等等组件
添加部分beanpostProcessor()
设置忽略的依赖自动注入接口
注册可以解析的自动装配
直接在任何组件中都可以注入下面这些类
注册环境变量 属性
第四步 点进去发现是个空方法 ,可以自定义子类实现 ,
可以自己控制在 beanfactory前后 进行 对 beanfactory的 操作
##前四部主要是对beanfactory的准备工作
=========================================================
第五步 执行beanfacotrypostprocessor
调用此方法,点金去
先得到所有的postprecessor
遍历所有的processor
首先要根据优先级去 判断是否要容器
点金此方法
第六步:拦截bean创建 后置处理器
先获取所有的 beanpostprocessor
不同的 beanpostprocessor在 bean创建前后的执行顺序是不一样的
从代码中可以看出 postprofecor都有优先级
放入各自优先级容器中
在一个个按优先级 注册到容器中
第七步:进步国际化资源解析
第八部:初始化事件派发器
第九部:子类重写这个方法,在容器中刷新时可以 自定义
第十步:注册监听
完成初始化剩下的所有单实例bean
代码逻辑如下:创建剩余的bean