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.xml
Maven 配置文件内所导入的技术依赖所对应的配置。
常用配置表
属性名称 | 属性描述 | 默认值 |
---|---|---|
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
可以封装所有的配置文件属性。
// 使用注解 @Autowired 自动装配将所有的数据封装到一个对象 Environment 中
@Autowired
private Environment env;
提取配置文件属性值:使用Environment
对象的getProperty(String key)
�方法即可获取到属性值。
读取 yaml 的指定数据封装到自定义的类中(最实用)
在实体类中定义要被封装的所有属性。
@Component // 标记当前类是 SpringBoot 的容器 bean
@ConfigurationProperties(prefix = "users") // 指定要封装的数据的前缀名