xuMengqi's Blog

Bean在Spring中是如何被创建的?


目录


  1. 1. 背景
  2. 2. 如果让你设计,你会如何设计?
  3. 3. Spring是如何设计的?
    1. 3.1. AbstractBeanFactory#doGetBean 详解
      1. 3.1.1. 转换传入的名称
      2. 3.1.2. 从单例缓存中获取Bean
      3. 3.1.3. 从父BeanFactory中获取Bean
      4. 3.1.4. 合并BeanDefinition
      5. 3.1.5. 检查依赖项
      6. 3.1.6. 根据作用域来创建Bean
      7. 3.1.7. 从Bean实例中获取对象
      8. 3.1.8. 适配Bean实例的类型
    2. 3.2. AbstractAutowireCapableBeanFactory#createBean 详解
      1. 3.2.1. 解析Bean的Class
      2. 3.2.2. 准备方法重写
      3. 3.2.3. 实例化前解析Bean
      4. 3.2.4. 创建Bean实例
    3. 3.3. AbstractAutowireCapableBeanFactory#doCreateBean 详解
      1. 3.3.1. 实例化Bean
      2. 3.3.2. 合并BeanDefinition后置处理
      3. 3.3.3. 设置Bean的属性
      4. 3.3.4. 初始化Bean
      5. 3.3.5. 注册Bean的销毁回调
      6. 3.3.6. 销毁Bean
    4. 3.4. Bean的创建的流程图
  4. 4. 实战
    1. 4.1. 如何自定义一个线程级Bean的作用域?
    2. 4.2. 如何解决原型Bean依赖注入单例Bean导致原型失效的问题?
    3. 4.3. 三级缓存是如何解决循环依赖的?