Spring容器初始化流程
2021-12-10 08:54:41 0 举报
Spring容器初始化流程
作者其他创作
大纲/内容
实例化并注册所有的BeanPostProcessor注册前需要进行排序:1.先注册实现PriorityOrdered接口的2.注册实现Ordered接口的3.注册所有常规未有排序标识的处理器
注册监听器:1.注册系统一些自带的监听器2.注册用户自己实现springListener的接口的监听器3.发布一些早起的系统事件给监听器4.监听器处理发布消息
registerBeanPostProcessors(beanFactory);
finishRefresh()
1.静态手动将BeanFactoryPostProcessor处理器注册到BeanFactory中2.将元数据中的BeanDefinitionRegistryPostProcessor注册到Bean Factory中3.二者注册之前都需要排序
初始化BeanFactory,对工厂的属性进行初始化赋值
initMessageSource();
onRefresh();
registerListeners();
启动
执行方法
创建BeanFactory工厂:ConfigurableListableBeanFactory为默认的工厂类
用来加载配置文件
public void refresh()
将配置文件中的bean做为元数据加载到spring容器中(元数据:配置文件中配置的对象、属性、未被spring初始化的)
初始化之前的验证操作:1.用户可自定义设定要初始化的配置变量2.验证系统的变量是否存在
initApplicationEventMulticaster();
ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();
prepareRefresh()
prepareBeanFactory(beanFactory);
对非懒加载的单例bean进行实例化、初始化(重点方法)
XmlBeanFactory
以下是refresh()方法内部初始化过程
public void register(Class<?>... componentClasses)
Spring容器初始化流程下面主要以AnnotationConfigApplicationContext为例
初始化reader、scanner
初始化上下文子类特殊的bean,在spring实例化bean之前调用,留给用户自定义扩展的
postProcessBeanFactory(beanFactory);
负责加载注解配置文件中的bean
负责加载XML配置文件中的bean
初始化消息处理器i18n国际化
最后,发布一些相应的事件,并让容器保持运行状态
排除一些不需要加载的依赖
正式进入Spring容器初始化方法
AnnotationConfigApplicationContext
初始化事件多路广播器,用来发布spring容器事件的:1.默认使用系统SimpleApplicationEventMulticaster2.也可以自己自定义实现AbstractApplicationEventMulticaster接口
invokeBeanFactoryPostProcessors(beanFactory);
finishBeanFactoryInitialization(beanFactory);
Container
0 条评论
回复 删除
下一页