Spring 源码总结

Posted bigshark

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring 源码总结相关的知识,希望对你有一定的参考价值。

refresh()

1. prepareRefresh()

刷新预处理

  1. 设置容器状态为 active
  2. 初始化属性配置,空方法,可以重写这个方法来自定义属性
  3. 属性配置校验,也是空的
  4. 缓存容器中早期事件监听器

2. obtainFreshBeanFactory()

获取 BeanFactory

  1. 创建 DefaultListableBeanFactory,并设置 serializationId
  2. 返回上一步创建的 BeanFactory,此时只有一些默认的配置

3. prepareBeanFactory(beanFactory)

BeanFactory 预准备

  1. 设置 BeanFactory 的类加载器、表达式解析器等
  2. 添加 BeanPostProcessor
  3. 忽略指定的自动装配依赖接口
  4. 注册能够自动装配的组件、默认的环境配置等

4. postProcessBeanFactory(beanFactory);

可以重写这个方法来在 BeanFactory 准备完成后执行一些操作

5. invokeBeanFactoryPostProcessors(beanFactory);

执行 BeanDefinitionRegistryPostProcessor、BeanFactoryPostProcessor。Spring 后置处理器源码

6. registerBeanPostProcessors(beanFactory);

执行 BeanPostProcessor。Spring 后置处理器源码

7. initMessageSource();

初始化 MessageSource,用于国际化配置等

  1. 从容器获取 MessageSource 组件
  2. 如果容器中不存在,则默认设置为 DelegatingMessageSource

8. initApplicationEventMulticaster();

初始化事件派发器。Spring事件监听器源码

9. onRefresh();

可以重写这个方法来在容器刷新时执行一些操作

10. registerListeners();

添加 ApplicationListener 监听器。Spring事件监听器源码

11. finishBeanFactoryInitialization(beanFactory);

  1. 初始化剩余的非懒加载单例 Bean。Spring 后置处理器源码
  2. 添加 @EventListener 监听器。Spring事件监听器源码

12. finishRefresh();

刷新完成,给监听器发布事件。Spring事件监听器源码

以上是关于Spring 源码总结的主要内容,如果未能解决你的问题,请参考以下文章

#yyds干货盘点#Spring 源码阅读Spring IoCAOP 原理小总结

Spring源码--Bean的管理总结

spring 源码分析总结

spring源码分析IOC容器初始化(总结)

Spring 源码总结

Spring注解之@Lazy注解,源码分析和总结