1. 前言
SpringBoot最核心的就是自动配置类,而自动配置类需要读取配置文件的信息,来自动创建实例,因此配置文件就显得非常重要了。因此本文主要介绍SpringBoot的配置文件、以及自动配置类和配置文件之间的关系,即SpringBoot的运行原理。
2. SpringBoot 配置文件
SpringBoot默认加载的配置文件是在classpath根目录的application.properties或者
application.yml配置文件。
--注意:
[1] 文件名不能写错,因为默认的文件名写死在SpringBoot配置代码中。
[2] SpringBoot支持properties和yml两个格式的配置文件。
2.1. 配置 Web 服务器
--问题1:为什么SpringBoot明明是一个jar项目而且没有选择服务器组件,但是仍然可以启动项目?
因为SpringBoot默认内嵌了一个Web服务器(Tomcat)
--问题2:那么我们如何修改内嵌的Web服务器的参数呢?
既然已经内嵌在程序里面了,我们也知道SpringBoot的参数就是配置在SpringBoot配置文件里面的。那么当然就是在 SpringBoot配置文件里面配置。
2.1.1. properties 格式配置
--Properties 文件的属性,使用的平铺方式书写
## 设置server参数
## 端口
server.port=8081
## 设置下上文路径
server.servlet.context-path=/springboot-quickStart-properties
2.1.2. yml 格式配置
--Yml 文件的属性使用折叠的方式书写
## 设置server参数
## 注意事项:
## [1] 冒号和参数值之间必须要隔一个空格,否则报错
## [2] 属性设置是有层级之分的
server:
port: 8082
servlet:
context-path: /springboot-quickStart-yml
2.2. 多配置文件
需求:希望可以配置多个配置文件,分类存放配置信息。
2.2.1. Properties 配置步骤
第一步:编写三个配置文件
第二步:编写配置文件内容
--注意:
[1] SpringBoo启动的时候加载的是 application.properties配置文件,再通过application.properties配置文件的 spring.profiles.active属性指定加载的其他配置文件。
[2] 其他配置文件的文件名格式为: application-XXX.properties。
--application.properties
## 指定加载其他配置文件
spring.profiles.active=server1,server2
--application-server1.properties
## 端口
server.port=8083
--application-server2.properties
## 设置下上文路径
server.servlet.context-path=/springboot-quickStart-properties
第三步:运行项目
--成功结果
2.2.2. Yml 配置步骤
第一步:编写三个 yml 配置文件
第二步:分别编写配置信息
--注意:
[1] SpringBoot启动的时候加载的是 application.yml 配置文件,再通过application.yml配置文件的 spring.profiles.active属性指定加载的其他配置文件。
[2] 其他配置文件的文件名格式为: application-.yml。
--application.yml
## 指定加载其他配置文件
spring:
profiles:
active: server1,server2
--application-server1.yml
## 端口
server:
port: 8084
--application-server2.yml
## 设置下上文路径
server:
servlet:
context-path: /springboot-quickStart-yml
第三步:启动测试
--成功结果
3. SpringBoot 运行原理
--问题:经过上一节课的学习,我们知道SpringBoot内置已经整合了很多技术以及功能组件,那么我们如何来记忆学习这些功能组件的属性呢?
通过理解 SpringBoot运行流程图,来理解功能组件的属性是放在哪里的,通过边学边找的方式来记忆规律。
--如图所示:
**启动流程:
第一步:SpringBoot通过加载贴在入口执行类上面的@SpringBootApplication注解,来启动 SpringBoot 项目。
第二步:根据贴在@SpringBootApplication注解上的三个注@SpringBootConfiguraton、 @EnableAutoConfiguration、@ComponentScan,来加载SpringBoot配置类、自动加载的配置类、组件类。
**3个注解的功能如下:
@SpringBootConfiguraton:标识一个类是配置类。 @EnableAutoConfiguration:标识这是一个自动加载的配置类,在SpringBoot启动的时候就自动加载配置类中的组件到容器中。 @ComponentScan:标识需要组件扫描的包,在SpringBoot中,包扫描给入口类所在包及其入口类的子包。
**注意事项:SpringBoot内置支持的组件在spring-boot-autoconfigure-2.2.2.RELEASE.jar 里面。如该包下的jdbc分包下的DataSourceAutoConfiguration:
其中的EnableConfigurationProperties注解用于加载用户配置的参数信息。
DataSourceProperties的作用就是标识配置文件中那些信息是DataSource使用的,标识的方式就是使用“spring.datasource”前缀。
--根据分析,可以得出结论:自动加载的配置类信息都在 XxxAutoConfiguration里面,配
置的属性参数都在XxxxxProperties里面。
--执行原理图:
**总结:通过执行原理图,可以知道SpringBoot是如何实现自动配置的。