20、配置文件-yaml的用法
YAML(YAML Ain't Markup Language)是一种简洁、易读的数据序列化格式,常用于配置文件。在Spring Boot中,YAML文件(通常命名为`application.yml`或`application.yaml`)用于配置应用程序的各种属性。以下是YAML配置文件的基本用法:
### 基本语法
1. **键值对**
- 使用冒号`:`分隔键和值,冒号后必须有一个空格。
- 示例:
```yaml
key: value
```
2. **缩进**
- 使用空格进行缩进,表示层级关系。通常使用2个空格作为缩进单位。
- 避免使用制表符(Tab),以免引起解析错误。
3. **注释**
- 使用`#`符号表示注释,从`#`开始到行尾的内容将被忽略。
- 示例:
```yaml
# 这是一个注释
key: value
```
### 数据类型
1. **纯量(Scalars)**
- **字符串**:可以加引号,也可以不加。单引号`''`会转义特殊字符,双引号`""`会保留特殊字符的含义。
- **数字**:整数、浮点数等。
- **布尔值**:`true`、`false`。
- **空值**:`null`。
2. **对象(Maps)**
- 使用缩进表示键值对,键和值之间用冒号分隔。
- 示例:
```yaml
person:
name: John
age: 30
```
3. **数组(Lists)**
- 使用短横线`-`表示数组元素,每个元素占一行。
- 示例:
```yaml
fruits:
- apple
- banana
- orange
```
### 高级用法
1. **多环境配置**
- 使用`---`分隔不同的环境配置。
- 通过`spring.profiles`指定激活的环境。
- 示例:
```yaml
# 公共配置
server:
port: 8080
---
spring:
profiles: dev
server:
port: 8081
---
spring:
profiles: prod
server:
port: 80
```
2. **配置属性引用**
- 使用`${}`引用其他属性的值。
- 示例:
```yaml
db:
url: jdbc:mysql://${db.host}:${db.port}/mydb
host: localhost
port: 3306
```
3. **配置类绑定**
- 使用`@ConfigurationProperties`注解将YAML配置绑定到Java类。
- 示例:
```java
@Configuration
@ConfigurationProperties(prefix = "myapp")
public class MyAppProperties {
private String name;
private int port;
// 省略getter和setter方法
}
```
### 注意事项
- **大小写敏感**:YAML对键名和值的大小写敏感。
- **缩进一致性**:保持缩进的一致性,避免解析错误。
- **避免重复键**:同一层级下,键名不能重复。
### 示例
以下是一个完整的`application.yml`示例:
```yaml
# 服务器配置
server:
port: 8080
servlet:
context-path: /myapp
# 应用程序名称
spring:
application:
name: myapp
# 数据库配置
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: root
password: password
driver-class-name: com.mysql.cj.jdbc.Driver
# 自定义配置
myapp:
features:
- feature1
- feature2
security:
enabled: true
timeout: 30s
```
在代码中,可以通过`@Value`注解或`@ConfigurationProperties`注解获取这些配置值。
---
通过以上介绍,您应该掌握了YAML配置文件在Spring Boot中的基本用法。YAML的简洁和易读性使其成为配置应用程序的首选格式。