spring扩展点
2021-12-24 11:07:24 15 举报
spring扩展点汇总
作者其他创作
大纲/内容
实例化Bean对象
1. 判断当前容器是否存在一个BeanFactory,如果存在则对其进行销毁和关闭2.创建DefaultListableBeanFactory3. 定制beanFactory设置相关属性4.加载BeanDefinitions5.将创建好的beanFactory交给context管理
扩展点:BeanDefinitionRegistryPostProcessor
所有的 BeanDefinitionRegistryPostProcessors手动注册的 BeanFactoryPostProcessor以及通过配置文件方式的 BeanFactoryPostProcessor 按照PriorityOrdered、Ordered、no ordered种方式分开处理、调用
重点重点重点初始化所有的 singleton beans
AbstractApplicationContext的refresh()方法
finishBeanFactoryInitialization(beanFactory)
典型的模板方法(钩子方法)
这里是提供给子类的扩展点;到这里的时候;所有的 Bean 都加载、注册完成了;但是都还没有初始化具体的子类可以在这步的时候添加一些特殊的 BeanFactoryPostProcessor 的实现类或做点什么事
invokeBeanFactoryPostProcessors(beanFactory)
扩展点:init-method
国际化
finishRefresh()
初始化后
扩展点:InstantiationAwareBeanPostProcessor的postProcessAfterInstantiation()方法
扩展点:BeanPostProcessor的postProcessAfterInitialization()方法
注意看和 BeanFactoryPostProcessor 的区别此接口两个方法: postProcessBeforeInitialization 和 postProcessAfterInitialization两个方法分别在 Bean 初始化之前和初始化之后得到执行。注意;到这里 Bean 还没初始化
填充属性
初始化当前 ApplicationContext 的事件广播器
registerListeners()
onRefresh()
registerBeanPostProcessors(beanFactory)
扩展点:BeanFactoryPostProcessor
填充属性populateBean()
实例化Bean之前
initMessageSource()
初始化前
prepareBeanFactory(beanFactory)
initApplicationEventMulticaster()
obtainFreshBeanFactory()
1.设置context启动时间2.设置context当前状态3.初始化context environment占位符4. 对属性进行必要的验证
postProcessBeanFactory(beanFactory)
实例化Bean之后
初始化initializeBean
扩展点:InstantiationAwareBeanPostProcessor的postProcessBeforeInstantiation()方法
最后广播事件ApplicationContext 初始化完成
扩展点:BeanPostProcessor的postProcessBeforeInitialization()方法
实例化单例Bean
注册 BeanPostProcessor 的实现类;
注册事件监听器;监听器需要实现 ApplicationListener 接口
prepareRefresh()准备刷新上下文
扩展点:MergedBeanDefinitionPostProcessor的postProcessMergedBeanDefinition()方法
初始化
扩展点:InstantiationAwareBeanPostProcessor的postProcessProperties()方法
设置 BeanFactory 的类加载器;添加几个 BeanPostProcessor;手动注册几个特殊的 bean
扩展点:InitializingBean的afterPropertiesSet()方法
扩展点:BeanNameAware、BeanClassLoaderAware、BeanFactoryAware接口
填充属性前
0 条评论
下一页