1,Spring Bean生命周期
1)生命周期4个阶段
image.png实例化->属性赋值->初始化->销毁
doCreateBean完成:实例化、属性赋值、初始化
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
image.png切入到多个Bean的生命周期中,如自动注入和AOP等实现
Spring提前初始化所有的BeanPostProcesser根据PriorityOrdered和Ordered控制顺序
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,生命周期过程图
image.png
Spring Bean实例化、属性赋值、初始化过程
网友评论