0. 预备知识
- 会用Spring框架
- 理解Bean的概念
- 理解BeanDefinition的概念
- 理解IoC容器的概念
- 理解BeanFactory的概念
- 大概了解refresh()方法
- 其实以上各种概念都是相辅相成的, 不存在说只学会Bean的概念而不懂BeanDefinition的概念, 所有概念都是在Spring技术框架体系共同作用的
1. getBean()介绍
- getBean()方法是Spring中最核心的API
- 在使用Spring的时候, 利用IoC容器获取Bean的方法全部都是通过它来实现的
- 很多时候我们的@Autowired @Resource 之类的注解, 其实是Spring框架帮我们用getBean()操作来获取Bean
2. getBean()方法的流程图
- 此图需要细品, 三言两语说不清楚
- 需要你跟着代码一步一步调试, 一行一行看源码
- 上面大红色的方块是AOP的默认实现环节, 非常关键
- 深绿色是Bean创建完成, 创建完成则会将Bean放入一级缓存
3. getBean()流程简介
- 查Bean的一二三级缓存, (从3级缓存取到的需要处理后放到2级缓存)
- 创建Bean开始
- 实例化createBean()
- 将Bean放入三级缓存
- 对Bean注入属性
- 初始化Bean
- 创建完成
- 将Bean放入一级缓存