我是靠谱客的博主 外向奇迹,最近开发中收集的这篇文章主要介绍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的生命周期所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部