我是靠谱客的博主 外向奇迹,这篇文章主要介绍Spring-bean加载流程及bean的生命周期,现在分享给大家,希望可以做个参考。

在这里插入图片描述

在这里插入图片描述
在bean构建的过程中,getBean方法内部的具体逻辑可以参考之前的文章
Spring如何解决循环依赖

具体bean的生命周期
(1)实例化Bean:如果要使用一个bean的话

(2)设置对象属性(依赖注入):他需要去看看,你的这个bean依赖了谁,把你依赖的bean也创建出来,给你进行一个注入,比如说通过构造函数,setter

(3)处理Aware接口:
如果这个Bean已经实现了ApplicationContextAware接口,spring容器就会调用我们的bean的setApplicationContext(ApplicationContext)方法,传入Spring上下文,把spring容器给传递给这个bean

(4)BeanPostProcessor:
如果我们想在bean实例构建好了之后,此时在这个时间带你,我们想要对Bean进行一些自定义的处理,那么可以让Bean实现了BeanPostProcessor接口,那将会调用postProcessBeforeInitialization(Object obj, String s)方法。

(5)InitializingBean 与 init-method:
如果Bean在Spring配置文件中配置了 init-method 属性,则会自动调用其配置的初始化方法。

(6)如果这个Bean实现了BeanPostProcessor接口,将会调用postProcessAfterInitialization(Object obj, String s)方法

(7)FactoryBean:如果bean实现了FactoryBean接口,那么最终返回的bean是getObject中的返回值 这一步在初始化bean的时候并没有执行,而是在第二次getBean的时候才会被执行

(8)DisposableBean:
当Bean不再需要时,会经过清理阶段,如果Bean实现了DisposableBean这个接口,会调用其实现的destroy()方法;
(9)destroy-method:
最后,如果这个Bean的Spring配置中配置了destroy-method属性,会自动调用其配置的销毁方法。

什么时候开始bean的生命周期呢?

这里我们定义是普通的Spring bean,即只注解了一个@Service/@Component的
在这里插入图片描述
我们将断点打在一个普通Spring bean上
查看断点信息:
在这里插入图片描述
重点关注红框方法
在这里插入图片描述
可以看到,遍历了最开始注册的bd信息来加载bean

最后

以上就是外向奇迹最近收集整理的关于Spring-bean加载流程及bean的生命周期的全部内容,更多相关Spring-bean加载流程及bean内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部