spring学习笔记源码剖析

Posted 拐柒

tags:

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

spring源码剖析

IOC

IOC容器创建管理bean对象的,spring bean是有生命周期的
1、构造器执行、初始化方法执行、Bean后置处理器的before/after方法、:AbstractApplicationContext#refresh#finishBeanFactoryInitialization
2、Bean工厂后置处理器初始化、方法执行:AbstractApplicationContext#refresh#invokeBeanFactoryPostProcessors
3、Bean后置处理器初始化:AbstractApplicationContext#refresh#registerBeanPostProcessors

refresh方法

通过上方可以观察出,refresh方法完成了spring容器初始化的很多工作。接下来逐个分析其中方法的作用。

prepareRefresh

容器初始化预处理,设置spring容器的启动时间,开启开启状态,撤销关闭等,验证环境信息里一些必须存在的属性。

obtainFreshBeanFactory(核心)

获取beanFactory;默认实现是DefaultListableBeanFactory,加载BeanDefinition并注册到BeanDefinitionRegistry。

prepareBeanFactory

BeanFactory的准备工作(BeanFactory的设置,以及context的类加载器等)

postProcessBeanFactory

该方法留与拓展使用,后置处理器

invokeBeanFactoryPostProcessors

用BeanFactory后置处理器的方法

registerBeanPostProcessors

初始化bean的后置处理器,在创建bean的前后执行

initMessageSource

完成国际化的一些功能(消息绑定,消息解析)

initApplicationEventMulticaster

初始化时间派发器

onRefresh

该方法留与拓展使用,在容器刷新时候可以自定义逻辑,如创建tomcat、jetty等web服务器

registerListeners

注册监听器。就是实现了ApplicationListener接口的监听器

finishBeanFactoryInitialization(核心)

初始化所有剩下的非懒加载的单例bean,初始化创建非懒加载方式的bean实例(未设置属性),填充属性,初始化方法调用,调用beanPostProcessor后置处理器

finishRefresh

完成容器初始化

以上是关于spring学习笔记源码剖析的主要内容,如果未能解决你的问题,请参考以下文章

Spring源码学习笔记

Spring源码学习笔记

Spring源码学习笔记

Spring源码学习笔记

spring jdbcTemplate源码剖析

Spring源码学习笔记1