自动配置是SpringBoot众多重要特性之一,它其实也像Starter一样,最终的目标都是为了帮开发者去摆脱原有Spring框架上使用的复杂性。而让开发者只需要关注业务逻辑开发本身。其实这也是众多开源框架都在追求的一个重要的目标。假设你使用一个全新的框架,从搭建到配置就搞了一整天,那谁还会觉得这个框架好用呢?
那我们既然谈到了SpringBoot的自动配置,我们首先需要知道的一点就是,SpringBoot自己所有的自动配置功能在spring-boot-autoconfigure包里面。
那有的同学可能就会有疑问,在项目中,我没有显示的指定依赖spring-boot-autoconfigure啊,那我的项目是不是就没有自动配置的能力呢?
如果要说明白这个问题,我们就还要再回到官方文档中去寻找答案了。在官方文档的1.5 Starters章节中,有关于50多个官方提供的Starter的简要介绍,我们发现,第一个介绍的Starter叫做spring-boot-starter,它的介绍如下图所示:

我们看到了,原来spring-boot-starter作为核心的Starter,已经包含了auto-configuration了。所以,还记得上文面试题50中,我们介绍web的Starter时,关于maven依赖的截图吗?这里我再引用一下:

我们发现,里面确实已经包含了spring-boot-autoconfiguration了。
那么,我们来看一看,这个spring-boot-autoconfiguration到底都包含了什么东西?打开它的spring.factories文件,我们发现了密密麻麻的自动配置相关的类,而这就是它所拥有的“超能力”列表:

而熟悉SpringBoot的同学们应该知道,spring.factories是一个神奇的文件,SpringBoot会自动的去扫描加载每个jar保重WEB-INF目录下的这个文件,并且读取相关的配置,然后利用反射去加载对应配置类,进行相应的环境配置和参数设置。
关于自动配置的其他内容,我们后面会依次介绍。