玖叶教程网

前端编程开发入门

spring bean生命周期很难记?猿友们请进来学习一波

相信很多java方向的码农都遇到过类似的经历,用了多年的sping全家桶,面试被问到spinrg bean生命周日很多人都回答不上来,最后被pass掉,可能之前都看过相关的文章最后都忘记了,在这里我教大家的是理解记忆的过程而不是死记硬背,分享一下鄙人的学习过程希望能够帮助大家。

涉及的两个包

spring bean包

spring webmvc包

如果想研究一个框架不知从哪下手,从日志下手绝对是最正确的选择,下面是目启动日志的几张关键截图

以上是项目启动的时spring几个关键步骤,这次重点研究bean工厂加载bean这个过程也就是

org.springframework.beans.factory.support.DefaultListableBeanFactory

为了更好的研究bean的生命周期这里在debug环境下查看spring类之间的调用关系如图:

debug调用过程

可以看出最终初始化bean是通过调用类

org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean()

方法代码如下,加上了注释

其中初始化BeanAware方法invokeAwareMethods如图:

从上两张图中可以看出来bean的生命周期为:

1.BeanNameAware (让Bean获取自己在BeanFactory配置中的名字)

2.BeanClassloaderAware(让Bean获取配置的ClassLoader)

3.BeanFactoryAware(让Bean获取配置他们的BeanFactory的引用)

4.BeanPostProcessor(Bean初始化的前置和后置处理)

5.InitializingBean(初始化bean)

6.destroy(销毁bean以上代码没有体现如果bean实现接口DisposableBean则需实现该方法)

以上就是研究spring bean生命周期的一个过程,实际光靠看这篇文章记不住什么,还需要自己去实际操作一下,通过debug查看调用关系,读源码,才能游刃有余的去怼面试官。这次就分享这些,如果感兴趣的朋友可以关注一波,笔者会经常分享一些干货哦!

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言