1,Spring Bean生命周期
1)生命周期4个阶段
实例化->属性赋值->初始化->销毁
doCreateBean完成:实例化、属性赋值、初始化
2)Bean销毁阶段容器关闭时调用
3)Bean的实例化
使用反射创建bean对象
4)Bean的属性赋值
5)Bean的初始化
2,Spring扩展点
1)BeanPostProcessor
切入到多个Bean的生命周期中,如自动注入和AOP等实现
Spring提前初始化所有的BeanPostProcesser根据PriorityOrdered和Ordered控制顺序
InstantiationAwareBeanPostProcessor在bean实例化前后增加处理
2)Aware接口如果bean实现了Aware接口,则可以从spring容器中获取对应的资源
BeanNameAware:回调setBeanName方法,获取bean的名称
BeanClassLoaderAware:回调setBeanClassLoader方法,获取bean的ClassLoader
BeanFactoryAware:回调setBeanFactory方法,获取BeanFactory容器
EnvironmentAware:用于获取Environment
ApplicationContextAware:用于获取ApplicationContext应用上下文
3)InitializingBean
Spring会在bean初始化时调用init方法
调用实现InitializingBean的afterPropertiesSet方法
调用使用xml配置init-method="init"或者使用@PostConstruct指定方法
3,生命周期过程图
Spring Bean实例化、属性赋值、初始化过程