《Spring》第五篇 Bean的生命周期 - 创建

目录

    • 一. Bean的生命周期
      • 第一阶段: 扫描
        • 1. 解析配置类上@ComponentScan注解定义的扫描路径,获取资源路径,并生成BeanDefinition
        • 2. 赋初始值,解析注解,并注册
        • 3. 合并BeanDefition
      • 第二阶段: 实例化
        • 1. 加载类
        • 2. 实例化前
        • 3. 实例化
        • 4. 实例化后
      • 第三阶段: 属性注入
      • 第四阶段: 初始化
        • 1. 初始化前 - 执行Aware回调
        • 2.初始化前 - Spring扩展点BeanPostProcessor.postProcessBeforeInitialization()
        • 3.初始化
        • 4.初始化后 - Spring扩展点BeanPostProcessor.postProcessAfterInitialization()
    • 二. 举例验证

本文使用Spring源码的版本是5.0
在Spring启动的过程中, 容器中加载的都是非懒加载的单例Bean, 并且容器中都是一个个的BeanDefition,而原型Bean是在需要使用到Bean时新创建一个; 以在配置类中使用注解@ComponentScan定义扫描路径, 使用AnnotationConfigApplicationContext做为容器, 来了解Bean的生命周期;
生命周期从大类分 : 创建 + 销毁
从细化可分为: 扫描 + 实例化 + 属性注入 + 初始化 + 销毁

《Spring》第五篇 Bean的生命周期 - 创建_第1张图片
为何是非懒加载的单例Bean ?
在源码DefaultListableBeanFactory.preInstantiateSingletons()中有明确的判断条件, 见★标识处

public void preInstantiateSingletons(<

你可能感兴趣的:(#,Spring,源码框架,spring,java,spring,boot)