简介
Spring框架源码拥有约108万行代码,如果要把所有的代码都看一遍,是需要花费大量时间和精力,而且很容易跟进一个方法绕进去,所以我们需要抓住Spring源码主干源码和Spring源码对各种设计模式的运用,以及怎么有条不紊的整合各种框架实现可扩展,各种框架是怎么无缝衔接的织入Spring框架的,比如Spring整合mybatis、nacos是在哪里织入Spring的等等。
ps:idea 插件 Statistic 可以统计框架有多少行代码
本章主要内容
- Spring源码的整体脉络梳理
- 什么是BeanFactory
- BeanFactory和ApplicationContext的区别
- 图诉SpringIoc的加载过程
先将类加载成Bean定义,加载Bean定义有一个步骤,首先读取到我们的配置类,通过我们的配置类,扫描到配置了@Component等注解的类,然后注册成Bean定义,ApplicationContext可以调用BeanFactoryPostProcessor修改Bean定义,调用BeanDefinitionRegistryPostProcessor注册成Bean定义,通过BeanFactory调用getBean(),然后会实例化,填充属性(解析@Autowired、@Value),初始化调用各种Aware,调用initMethod方法,生产过程中会有很多扩展点,最终放在一个Map里面
- 图诉Bean的生命周期
- 图诉Spring中的扩展接口
前置知识
- Spring框架的使用
- java编程基础、反射、设计模式、动态代理等
学习资料
- 设计模式:https://mp.weixin.qq.com/s/12fLnRxKCYABSItkKvU8Fw
概念
IOC 控制反转:用来解决层层之间的耦合
Spring是一个IOC的容器,容器里面管理的是各种Bean,IOC控制反转,是一种设计思想,DI是它的实现。
脉络
- 我们知道IOC管理了很多Bean,那么怎么将Bean注入IOC,而成为一个Bean?或者我们怎么将一个类怎么变成一个Bean交给IOC管理?
Spring应用的时候一般会
- 第一步:配置我们的类,不管是xml或者@注解、javaconfig方式配置。
- 第二步:加载Spring上下文,一般2种方式。xml:new ClassPathXmlApplicationContext(“xml”) 注解:new AnnotationConfigApplicationContext(Config.class)
- 第三步: