0. 预备知识

  1. 会用Spring框架
  2. 理解Bean的概念
  3. 理解BeanDefinition的概念
  4. 理解IoC容器的概念
  5. 理解BeanFactory的概念
  6. 大概了解refresh()方法
  7. 其实以上各种概念都是相辅相成的, 不存在说只学会Bean的概念而不懂BeanDefinition的概念, 所有概念都是在Spring技术框架体系共同作用的

1. getBean()介绍

  • getBean()方法是Spring中最核心的API
  • 在使用Spring的时候, 利用IoC容器获取Bean的方法全部都是通过它来实现的
  • 很多时候我们的@Autowired @Resource 之类的注解, 其实是Spring框架帮我们用getBean()操作来获取Bean

2. getBean()方法的流程图

  • 此图需要细品, 三言两语说不清楚
  • 需要你跟着代码一步一步调试, 一行一行看源码

点击查看【processon】

  • 上面大红色的方块是AOP的默认实现环节, 非常关键
  • 深绿色是Bean创建完成, 创建完成则会将Bean放入一级缓存

3. getBean()流程简介

  1. 查Bean的一二三级缓存, (从3级缓存取到的需要处理后放到2级缓存)
  2. 创建Bean开始
  3. 实例化createBean()
  4. 将Bean放入三级缓存
  5. 对Bean注入属性
  6. 初始化Bean
  7. 创建完成
  8. 将Bean放入一级缓存