Spring的refresh方法
2020-08-14 09:44:49 14 举报
Spring的refresh流程
作者其他创作
大纲/内容
LoadTimeWeaver处理,代码编织类加载器的设置与后置处理器的设置
执行流程:
SmartInitializingSingleton的初始化回调
3-2
3-9
初始化 MessageSource 组件initMessageSource()
3.12.2
1
3-4
3.12.1
3-6
3.1.5
3-1
注册监听器到事件派发器
3.6.1
3.3.3
事件监听器发布refresh事件
3.11
注册BeanPostProcessor(Bean的后置处理器)registerBeanPostProcessors(beanFactory)
3
完成context的刷新finishRefresh()
注册 BeanPostProcessor,处理监听器
3.4.1
3-10
3-12
注册生命周期处理器
BeanFactory的准备工作prepareBeanFactory(beanFactory);
执行 BeanDefinitionRegistryPostProcessor及 BeanFactoryProcessor的实现类(ConfigurationClassPostProcessor)
3.6.2
1-1
注册应用的监听器registerListeners()
3-5
刷新前预处理prepareRefresh()
模板方法,web容器可以使用自定义的处理去创建Servlet容器
获取 Bean FactoryobtainFreshBeanFactory();
register(annotatedClasses)进行配置类的解析及注册
自定义处理onRefresh()
Bean的初始化
设置BeanPostProcessor
3.1.4
getEnvironment().validateRequiredProperties()验证Environment属性
设置类加载器
3-8
this.reader = new AnnotatedBeanDefinitionReader(this)
3-3
3.10.2
生命周期的refresh事件
执行 BeanFactoryPostProcessorinvokeBeanFactoryPostProcessors(beanFactory)
初始化事件派发器initApplicationEventMulticaster()
AnnotationConfigApplicationContext继承了GenericApplicationContext GenericApplicationContext的无参构造方法如下:public GenericApplicationContext() { this.beanFactory = new DefaultListableBeanFactory(); }
3.12.3
1-2
注册工厂中的其他 BeanPostProcessor
3.1.1
JMX 注册当前上下文
重新注册ApplicationListenerDetector到尾部
设置 自动装配的 Bean
this.earlyApplicationListeners = new LinkedHashSet<>(this.applicationListeners)初始化监听器
this.scanner = new ClassPathBeanDefinitionScanner(this)
refresh()
派发事件
3-7
3.3.2
3.9.1
3.3.6
3.3.4
3.3.1
this()执行构造函数
BeanFactory准备工作的后置处理postProcessBeanFactory(beanFactory)
3.5.1
3.1.2
BeanFactory 准备的后置处理Web容器在此处增加Bean Scope的添加
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ApplicationConfig.class)
3.12.5
this.active.set(true);更新活跃状态
3.1.3
检查工厂是否注入 applicationEventMulticaster没有则注入默认的 SimpleApplicationEventMulticaster
注册默认环境 Bean,Spring环境、系统属性、系统变量
this.earlyApplicationEvents = new LinkedHashSet<>();初始化早期事件集合
3.11.1
initPropertySources();初始化上下文的占位符
3.3.5
2
3.10.1
3.12.4
3.11.2
3.6.3
初始化非懒加载的单例BeanfinishBeanFactoryInitialization(beanFactory)
注册 BeanPostProcessorChecker
清缓存
收藏
0 条评论
回复 删除
下一页