文章目录
基本语法
- key: value形式,kv之间有空格
- 大小写敏感
- 使用缩进表示层级关系,缩进不允许使用tab,只允许空格。缩进的空格数不重要,只要相同层级的元素左对齐即可
- '#'表示注释
- 字符串无需加引号,如果要加,也可
数据类型
- 基本:date、boolean、string、number、null
- 对象:map、hash、set、object,键值对的集合
写法举例
行内写法
对象:
k: {k1:v1,k2:v2,k3:v3}
数组:
k: [v1,v2,v3]
级联写法
对象:
spring:
cloud:
nacos:
discovery:
username: nacos
password: nacos
server-addr: 192.168.1.61:8848
namespace: cml
config:
server-addr: 192.168.1.61:8848
file-extension: yaml
namespace: public
数组:
cml:
- 1
- 2
- 3
配置提示
<!-- configuration-processor -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
<exclude>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
用法举例
逗号分隔
配置:
test:
list: aaa,bbb,ccc
读取配置:
@Value("#{'${test.list:}'.split(',')}")
默认值
单个值
配置:
cml:
age: 20
读取配置:
@Value("${cml.age:18}")
private String age;
//如果没有 ngh.cameraIndexCodes 这个配置,或者这个配置为空,都将赋值默认值 '空字符串'
@Value("${ngh.cameraIndexCodes:}")
private String manoeuvreTip;
集合值
配置:
yaml
autoLog:
ignoreMethods:
读取配置:
java
@Value("${autoLog.ignoreMethods:\"login\", \"changePassword\", \"modifyPassword\",
\"uploadFile\", \"downloadLatestFileByType\", \"syncPurchaseRequirement\"}")
private List<String> ignoreMethods;
映射到类
配置:
cml:
admin:
defaultUserName: admin
defaultPassword: 111111
defaultUserName1: admin1
defaultPassword1: 222222
读取配置:
-
ConfigurationProperties注解将加载配置项内容到类属性上面
-
Component:将类注册到 Spring 容器,这样其他类可以直接 Autowired 使用
-
RefreshScope :配置更改,自动刷新,不用重启启动服务
@RefreshScope
@Component
@ConfigurationProperties(prefix = "cml.admin")
@Data
@ToString
public class Account implements Serializable {
private String defaultUserName;
private String defaultPassword;
private String defaultUserName1;
private String defaultPassword1;
}
注意事项
- @Value 不可和@AllArgsConstructor 同时使用