Spring 源码深度解析(第 2 版)读书笔记(五)ApplicationContext下的加载过程

之前学习了BeanFactoy的创建过程和Bean的生命周期之后,这次将看看平时经常使用ApplicationContext和BeanFactory是什么关系。

从new一个ApplicationContext开始

进入的第一个方法看看:

进入第二方法,也是最重要的一个方法,这个方法中有十二个方法,描述着整个ApplicationContext的加载过程。

然后我们一个一个进去看看,容器刷新过程,都做了哪些工作

第一个:prepareRefresh

第二个方法:ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();

 

第三个方法:prepareBeanFactory(beanFactory);

第四个方法:postProcessBeanFactory(beanFactory);

第五个方法:invokeBeanFactoryPostProcessors(beanFactory);

第六个方法:registerBeanPostProcessors(beanFactory);

第七个方法:initMessageSource();

第八个方法:initApplicationEventMulticaster();

第九个方法:onRefresh();

第十个方法:registerListeners();

第十一个方法:finishBeanFactoryInitialization(beanFactory);

进入下一层

第十二个方法:finishRefresh();

 

到这里,ApplicationContext的创建过程,也就看完了,在有着对BeanFactory和Bean生命周期的了解的前提下,看容器刷新过程还是比较轻松的,虽然一些部分没搞懂,有可能是自身对于spring的使用还不够深入导致的。

在ApplicationContext中,我们可以看到,ApplicationContext其实就是对BeanFactory的一种功能扩展,以具备Bean的管理的基础上,进一步做了延伸,在里面可以发现,对于BeanFactoryPostProcessor和BeanPostProcessor,我们平时使用的注解的实现,最后很多都是由它们来实现的。

功力尚浅,它们两个的作用应该不止于此,下一步继续探索。

 

posted @ 2021-01-13 09:47  huang1993  阅读(131)  评论(0编辑  收藏  举报