Spring - Bean生命周期与扩展机制

1,Spring Bean生命周期

1)生命周期4个阶段实例化->属性赋值->初始化->销毁
doCreateBean完成:实例化、属性赋值、初始化

image.png

2)Bean销毁阶段容器关闭时调用
image.png

3)Bean的实例化
使用反射创建bean对象
image.png

4)Bean的属性赋值
image.png

image.png

5)Bean的初始化
image.png

image.png

2,Spring扩展点

1)BeanPostProcessor切入到多个Bean的生命周期中,如自动注入和AOP等实现
Spring提前初始化所有的BeanPostProcesser 根据PriorityOrdered和Ordered控制顺序

image.png

InstantiationAwareBeanPostProcessor在bean实例化前后增加处理
image.png

2)Aware接口如果bean实现了Aware接口,则可以从spring容器中获取对应的资源
BeanNameAware:回调setBeanName方法,获取bean的名称
BeanClassLoaderAware:回调setBeanClassLoader方法,获取bean的ClassLoader
BeanFactoryAware:回调setBeanFactory方法,获取BeanFactory容器
EnvironmentAware:用于获取Environment
ApplicationContextAware:用于获取ApplicationContext应用上下文
3)InitializingBean
Spring会在bean初始化时调用init方法
image.png

调用实现InitializingBean的afterPropertiesSet方法
image.png

调用使用xml配置init-method="init"或者使用@PostConstruct指定方法

3,生命周期过程图

Spring Bean实例化、属性赋值、初始化过程

image.png

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容