可以学习到什么? 0. spring整体脉络 1. 描述BeanFactory 2. BeanFactory和ApplicationContext的区别 3. 简述SpringIoC的加载过程 4. 简述Bean的生命周期 5. Spring中有哪些扩展接口及调用机制 一. spring源码整体脉络介绍及源码编译 1.1. 什么是IOC ioc是控制反转, 这是一种设计理念, 用来解决的是层和层之间, 类和类之间的耦合问题. 比如,现在有A, B两个类, 在A类中引用了B类. 那么如果有一天, B类要被替换掉, 我们会怎么办呢?如果B类被引用了100次, 我们要替换100次? 现在呢, A是直接调用B, 如果我们间接的调用B, 将B包装起来, 如果以后将B换成C, 只需要在包装类里面替换就可以了. 我们不需要修改A类. 这就是控制反转. Spring使用了ioc, Spring.ioc(A, B) 将A和B的引用都存在ioc中, spring会帮我们维护好, 完全不用担心. 当我们在A中要使用B的时候, 使用B对应的接口, 然后使用@Autowired注解 A { @Autowired private IB b; } 什么时候把B换掉了, 不痛不痒的, 只需要把新的类放到IoC中就可以了. 1.2. Spring源码的整体脉络梳理 Spring IoC是一个容器, 在Spring