从本章开始我们将开始进入Spring容器真正的刷新启动过程,直接点击或者debugger进入AbstractApplicationContext的refresh()方法。这里再次提示一下大家,在先前的提到过的“胸有大纲,心中不慌”,大家务必要克制自己挨个debugger进refresh的每个方法进行查看的冲动。
大家想啊,Spring的作者把一个个的对象和方法封装出来,就是想要屏蔽底层实现的复杂性,那我们就按照这一个个方法名先理解个大概。建议大家直接把springframework的官方源码clone下来,在分析源码的过程中,尽情的把自己的理解和疑问以注释的形式,写到源码当中去,这就好比读一本书,只有有了自己的理解和感想,这本书才会被读者赋予它的灵魂。
下面笔者就打个样。进入refresh()方法,看看Spring容器是咋刷新的。
@Override
public void refresh() throws BeansException, IllegalStateException {
synchronized (this.startupShutdownMonitor) {
/*
* Prepare this context for refreshing, setting its startup date and
* active flag as well as performing any initialization of property sources.
* 容器刷新前的准备工作
* 1. 设置启动时间、激活/关闭标志位,
* 2. 执行属性资源的初始化验证必须的属性
* 3. 进行监听器和监听事件集合初始化
*/
prepareRefresh();
// Tell the subclass to refresh the internal bean factory.
// 获取BeanFactory对象,同时还进行了BeanDefinition信息的加载
ConfigurableListableBeanFactory b

本文深入剖析Spring容器的启动过程,重点关注ApplicationContext.refresh()方法。建议读者通过阅读官方源码,理解方法功能,并在源码中添加注释以加深理解。后续章节将详细解析关键部分,如监听器和国际化等。
最低0.47元/天 解锁文章
13万+

被折叠的 条评论
为什么被折叠?



