多语言展示
当前在线:248今日阅读:176今日分享:34

SpringBoot如何分析原理与配置

SpringBoot原理分析与配置
方法/步骤
1

1.1 起步依赖原理分析1.1.1 分析spring-boot-starter-parent按住Ctrl点击pom.xml中的spring-boot-starter-parent,跳转到了spring-boot-starter-parent的pom.xml,xml配置如下(只摘抄了部分重点配置):

2

按住Ctrl点击pom.xml中的spring-boot-starter-dependencies,跳转到了spring-boot-starter-dependencies的pom.xml,xml配置如下(只摘抄了部分重点配置):

3

从上面的spring-boot-starter-dependencies的pom.xml中我们可以发现,一部分坐标的版本、依赖管理、插件管理已经定义好,所以我们的SpringBoot工程继承spring-boot-starter-parent后已经具备版本锁定等配置了。所以起步依赖的作用就是进行依赖的传递。1.1.2 分析spring-boot-starter-web按住Ctrl点击pom.xml中的spring-boot-starter-web,跳转到了spring-boot-starter-web的pom.xml,xml配置如下(只摘抄了部分重点配置):

4

从上面的spring-boot-starter-web的pom.xml中我们可以发现,spring-boot-starter-web就是将web开发要使用的spring-web、spring-webmvc等坐标进行了“打包”,这样我们的工程只要引入spring-boot-starter-web起步依赖的坐标就可以进行web开发了,同样体现了依赖传递的作用。1.2 自动配置原理解析按住Ctrl点击查看启动类MySpringBootApplication上的注解@SpringBootApplication

5

注解@SpringBootApplication的源码

6

其中,@SpringBootConfiguration:等同与@Configuration,既标注该类是Spring的一个配置类@EnableAutoConfiguration:SpringBoot自动配置功能开启按住Ctrl点击查看注解@EnableAutoConfiguration

7

其中,@Import(AutoConfigurationImportSelector.class) 导入了AutoConfigurationImportSelector类按住Ctrl点击查看AutoConfigurationImportSelector源码

8

其中,SpringFactoriesLoader.loadFactoryNames 方法的作用就是从META-INF/spring.factories文件中读取指定类对应的类名称列表

9

spring.factories 文件中有关自动配置的配置信息如下:

10

上面配置文件存在大量的以Configuration为结尾的类名称,这些类就是存有自动配置信息的类,而SpringApplication在获取这些类名后再加载我们以ServletWebServerFactoryAutoConfiguration为例来分析源码:

11

其中,@EnableConfigurationProperties(ServerProperties.class) 代表加载ServerProperties服务器配置属性类进入ServerProperties.class源码如下:

12

其中,prefix = 'server' 表示SpringBoot配置文件中的前缀,SpringBoot会将配置文件中以server开始的属性映射到该类的字段中。映射关系如下:

推荐信息