Spring Bean 元信息解析阶段
面向资源 BeanDefinition 解
- BeanDefinitionReader
- XML 解析器 - BeanDefinitionParser
面向注解 BeanDefinition 解析
- AnnotatedBeanDefinitionReader
Spring Bean 注册阶段
BeanDefinition 注册接口
- BeanDefinitionRegistry
Spring BeanDefinition 合并阶段
BeanDefinition 合并
- 父子 BeanDefinition 合并
- 当前 BeanFactory 查找
- 层次性 BeanFactory 查找
Spring Bean Class 加载阶段
- ClassLoader 类加载
- Java Security 安全控制
- ConfigurableBeanFactory 临时 ClassLoader
Spring Bean 实例化阶段
传统实例化方式
- 实例化策略 - InstantiationStrategy
构造器依赖注入
Spring Bean 实例化前阶段
非主流生命周期 - Bean 实例化前阶段
- InstantiationAwareBeanPostProcessor#postProcessBeforeInstantiation
Spring Bean 实例化后阶段
Bean 属性赋值(Populate)判断
- InstantiationAwareBeanPostProcessor#postProcessAfterInstantiation
Spring Bean Aware 接口回调阶段
Spring Aware 接口
- BeanNameAware
- BeanClassLoaderAware
- BeanFactoryAware
- EnvironmentAware
- EmbeddedValueResolverAware
- ResourceLoaderAware
- ApplicationEventPublisherAware
- MessageSourceAware
- ApplicationContextAware
Spring Bean 初始化前阶段
已完成
- Bean 实例化
- Bean 属性赋值
- Bean Aware 接口回调
方法回调
- BeanPostProcessor#postProcessBeforeInitialization
Spring Bean 初始化阶段
Bean 初始化(Initialization) • @PostConstruct 标注方法
- 实现 InitializingBean 接口的 afterPropertiesSet() 方法
- 自定义初始化方法
Spring Bean 初始化后阶段
方法回调
- BeanPostProcessor#postProcessAfterInitialization
Spring Bean 销毁前阶段
方法回调
- DestructionAwareBeanPostProcessor#postProcessBeforeDestruction
Spring Bean 销毁阶段
- Bean 销毁(Destroy) • @PreDestroy 标注方法
- 实现 DisposableBean 接口的 destroy() 方法
- 自定义销毁方法
Spring Bean 垃圾收集
- Bean 垃圾回收(GC) • 关闭 Spring 容器(应用上下文)
- 执行 GC
- Spring Bean 覆盖的 finalize() 方法被回调