SpringBoot 配置文件简介

SpringBoot 提供了大量的自动配置,极大地简化了 Spring 应用的开发过程,当用户创建了一个 SpringBoot 项目后,即使不进行任何配置,该项目也能顺利的运行起来。当然,用户也可以根据自身的需要使用配置文件修改 Spring Boot 的默认设置。

SpringBoot 默认使用以下 3 种全局的配置文件,其文件名是固定的。

  • application.properties
  • application.yaml
  • application.yml(通常用这种)

配置文件的加载优先级

如果以上三种配置文件格式同时存在,那么存在加载顺序:properties>yml>yaml
一般开发中只会用一种配置文件格式,一般情况下使用.yml格式

不同配置文件中的相同配置,级别高的会覆盖级别低的配置,不同的配置会全部保留。

什么是 YAML ?

其中,application.yml 是一种使用 YAML 语言编写的文件,它与 application.properties 一样,可以在 Spring Boot 启动时被自动读取,修改 Spring Boot 自动配置的默认值。

AML 全称 YAML Ain’t Markup Language,它是一种以数据为中心的标记语言,比 XML 和 JSON 更适合作为配置文件。(==>点击查看 YAML 教程<==)

YAML 中转义字符

YAML 支持转义字符,但是要用" "双引号包裹住,否则不会解析。

  • 有双引号:会解析成转义字符
  • 无双引号:不会解析成转义字符

SpringBoot 常用的配置

SpringBoot 官方配置参考文档

其中并不是所有的配置属性都可以直接进行配置的,项目中使用到的技术才可以进行配置。
简单来说就是只能修改在 项目中的pom.xmlMaven 配置文件内所导入的技术依赖所对应的配置。

常用配置表

属性名称 属性描述 默认值
server.port 服务器端口号 8080
logging.level.* 日志级别
- logging.level.root=debug
- logging.level.root=error(报错级别日志)
INFO

在项目中读取 yaml 配置数据

读取 yaml 的单一数据

使用注解@Value配合使用SpEL表达式可以提取出 yaml 配置文件的属性值。
SpringBoot 注解大全

SpEL 表达式基本用法

  • 读取单一数据:@Value(${users.name})如果有多层,层级之间用.
  • 读取数组内数据:@Value(${users[0])[]表示读取数组的索引值,索引从0开始计数
  • 在配置文件内引用变量:${}
  • 注意:YAML 支持字符转义,详情参考:https://www.yuque.com/qqq8w7/java/koeqro#kbudm

读取 yaml 的所有数据

SpringBoot 提供了一个类Environment可以封装所有的配置文件属性。

  1. // 使用注解 @Autowired 自动装配将所有的数据封装到一个对象 Environment 中
  2. @Autowired
  3. private Environment env;

提取配置文件属性值:使用Environment对象的getProperty(String key)�方法即可获取到属性值。

读取 yaml 的指定数据封装到自定义的类中(最实用)

在实体类中定义要被封装的所有属性。

  1. @Component // 标记当前类是 SpringBoot 的容器 bean
  2. @ConfigurationProperties(prefix = "users") // 指定要封装的数据的前缀名