Springboot自动配置前因后果

书中人 2019年08月25日 2,286次浏览

自动配置

在日常使用springboot的时候我们一定被其自动配置的魅力深深吸引,感觉超强大的功能,方便至极,今天我们就来解开这里面的神秘面纱。
springboot关于自动配置类都是在Spring-boot-autoconfigure-xxxxx.jar中、一般会包含spring生态中集成的一系列配置如下。
Spring-boot-autoconfigure-xxxxx.jar

通过源码追踪springboot启动时都做了那些自动配置

(1)运行jar时增加–debug参数来输出配置项
java -jar SpringDemo.jar --debug
(2) 在spring的配置文件中把debug设置为true
debug = true
(3) 在idea中配置。
debug
--------
我们可以通过debug看到一些自动配置的
已自动配置
未自动配置

运行原理解析

我们都知道@SpringbootApplication是springboot的核心类,并且是一个组合注解,其中有一个注解是@EnableAutoConfiguration
所以我们就来解开@EnableAutoConfiguration的神秘面纱、
EnableAutoConfiguration
我们可以看出这个注解也是一个组合注解,由@AutoConfigurationPackage 和@Import(AutoConfigurationImportSelector.class)组成,
AutoConfigurationPackage见名知意就知道是自动向包含带注释的类的包注册。主要来看Import注解,这是一个导入注解,我们可以看到导入的注解是
AutoConfigurationImportSelector.class 类,而AutoConfigurationImportSelector是通过SpringFactoriesLoader.loadFactoryNames方法来
扫描具有META-INF/spring.factories文件的jar包的。而Spring-boot-autoconfigure-xxxxx.jar之中就有一个spring.factories文件,我们来看源码:
加载Factories文件
加载Factories文件
Factories文件
打开上图中任意一个带autoconfig的文件。都会发现其有一个@ConditionalOnXXXX的注解,如下,到底有多少个,我们打开这个注解所在包,看看其到底是做什么的。
@ConditionalOnXXXX的注解
Conditional注解

明天再继续,今天太晚了。明天还要上班,拜拜。