1. 自动装配流程
-
对于 SpringBoot 的自动装配流程,文字 + 代码截图太痛苦,下面直接一张图简单概况下
-
其实个人总结而言,所谓的自动装配,其实是
- 对于常用的技术,按照一定的规则进行开发
- 这个所谓的规则就是这项技术要预留一个
xxxAutoConfiguration
的核心自动配置类 - 在这个自动配置类中包含了这项技术使用所需要的所有配置等,也就是这个自动配置类是这项技术使用的入口,开关
- 然后再把这个自动配置类的全路径类名作为
value
写进在META/INF
目录下,一个叫spring.factories
的文件里面,其key
即为org.springframework.boot.autoconfigure.EnableAutoConfiguration
- 接着对于我们使用
SpringBoot
技术开发项目时,启动的时候会默认加载这个在META/INF
目录下的spring.factories
文件,然后默认加载其中的key
为org.springframework.boot.autoconfigure.EnableAutoConfiguration
的value
值,也即注册所有写进来的类文件的实例对象,相当于加载其对应的技术 - 但是加载 bean 的时候可能需要一定的条件,所以实际上是有条件的选择性加载
- 所以,在项目中开发中我们能够使用某些我们从未手动加载过,但是
Spring
容器中却存在的 bean
-
所以,在
SpringBoot
项目中为什么我们需要额外使用一项技术时(比如说Redis
),只需要导入其对应的依赖以及做相关配置即可 -
无非就是
Redis
按照规则开发完后,把启动入口的全路径类名写进META/INF
下的spring.factories
文件 -
我们启动项目时,直接读取其值,加载进来,所以我们也就能使用
Redis
这项技术了 -
其自定义
starter
规则如此简单,能够让开发者快速上手 -
当然,
SpringBoot
使用起来越简单方便,其内部的封装也就也多