网站建设技术 翻译,wordpress typecho,网站上怎么做动图,网站衣服模特怎么做spring refresh
概述
refresh是一个方法#xff0c;spring中所有的ApplicationContext容器都需要通过refresh方法初始化#xff1b; 处理步骤
其中refresh方法包含12个主要的处理步骤#xff1a;
1、第1个步骤做前置准备
2、第2~6步骤创建BeanFactory#xff08;Appl…spring refresh
概述
refresh是一个方法spring中所有的ApplicationContext容器都需要通过refresh方法初始化 处理步骤
其中refresh方法包含12个主要的处理步骤
1、第1个步骤做前置准备
2、第2~6步骤创建BeanFactoryApplicationContext核心功能由BeanFactory完成
3、第7~12准备ApplicationContext其中11步创建初始化容器中的单例bean
1、prepareRefresh
这个过程创建准备Environment对象
Environment对象存储了java和系统的一些键值信息
最重要的是存储我们自定义配置的application.properties
总结
作用之一是为后续value值注入提供键值 测试
解析value注解配置的值 2、obtainFreshBeanFactory
这一步创建或者获取BeanFactoryBeanFactory虽然和ApplicationContext是继承关系但是一般是配合使用的ApplicationContext对负责bean创建依赖注入和初始化仍然是直接调用的BeanFactory的方法BeanDefinition规定了bean的特征如单例多例依赖关系BeanDefinition可以通过xml及配置类获得也可通过组件扫描获得
BeanFactory通过BeanDefinition收集信息后创建bean 测试
我们可以看到beandefinition初始为空 我们接着在xml中配置bean 可以看到beandifinition已经不为空 也可通过配置类配置bean 也可以看到bean被注入了进来 3、prepareBeanFactory
完善BeanFactory了解谁来解析${ }应用ApplicationContext提供的Environment解析特殊bean的注入BeanFactoryApplicationContext 4、postProcessBeanFactory 这一步是空实现留给子类扩展 模板方法的设计模式
5、invokeBeanFactoryPostProcessors
beanFactory的后处理器充当BeanFactory扩展点
可以用来补充修改BeanDefinition
ConfigurationClasProcessor解析Configuration Bean import等补充到bean的map中
6、registerBeanPostProcessors
加入更多的后处理器
这一步只是注册后续步骤才会使用
7、initMessageSource
实现国际化
容器中有messageSource如果没有在map中找到会自动创建
8、initApplicationEventmulicaster
事件广播器发送事件给监听器
通过ApplicationContext的publishEvent事件对象来发布
9、onRefresh
空实现留给子类
springboot中的子类在这准备webserver即内嵌web容器
10、RegisterListeners
initApplicationEventmulicaster管理发送监听事件这里管理接收事件
需要实现ApplicationListerer重写相关方法
11、finishBeanFactoryInitialization
singletonObject单例池embeddevalueresolves内嵌解析器解析${ }conversionService做类型转换
12finishRefresh
lifecycleProcessor生命周期处理器控制容器内生命周期的管理调用context.start可以触发所有实现lifecycle接口bean的start方法
总结