基本语法
大小写敏感
使用缩进表示层级关系
缩进不允许使用tab,只允许空格
缩进的空格数不重要,只要相同层级的元素左对齐即可
'#'表示注释
数据类型
YAML 支持以下几种数据类型:
对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
纯量(scalars):单个的、不可再分的值
基本使用
name: 应用名称
application:
name: 应用名称
在Springboot 中的配置文件中,最经常使用的就是这种简单的配置。
这种配置可以通过以下形式获取到结果:
@Value("name")
private String name;
@Value("application.name")
private String applicationName;
List类型
在配置中我们经常需要配置数组类型的值,那要怎么来配呢?
#第一种
applicaiton-list:
- app1
- app2
- app3
#第二种
application-list: app1,app2,app3
#第三种
application-list: [ app1,app2,app3 ]
以上几种方式都可以用来配置数组。那怎么来读取呢。第二种可以通过以下形式读取,第一、第三种@Value读取不了
@Value("${application-list}")
private List<String> applicationList;
Map类型
那如果要配置一个map呢,如下所示
application-map:
app1: name1
app2: name2
app3: name3
那要怎么接收这个map呢。往下看
复杂配置的接收
application-config:
enable: true
white-list: 1,2,3
name-map:
1: app1
2: app2
3: app3
4: app4
list-object:
- id: 1
name: app1
- id: 2
name: app2
map-object:
1:
id: 1
name: app1
2:
id: 2
name: app2
配置接收:
定义Applicaiton对象
import lombok.Data;
/**
* @Author: lis216
* @Date: 2024/1/10
* @Modify By:
*/
@Data
public class Application {
private Integer id;
private String name;
}
定义接收配置的对象
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
/**
* @Author: lis216
* @Date: 2024/1/10
* @Modify By:
*/
@Data
@EnableConfigurationProperties(ApplicationProperties.class)
@ConfigurationProperties(prefix = "application-config")
@Component
@RefreshScope
public class ApplicationProperties {
private boolean enable;
private List<Integer> whiteList;
private Map<Integer, String> nameMap;
private List<Application> listObject;
private Map<Integer, Application> mapObject;
}
配置使用
@Resource
private ApplicationProperties applicationProperties;
最终效果
ApplicationProperties(enable=true, whiteList=[1, 2, 3], nameMap={1=app1, 2=app2, 3=app3, 4=app4}, listObject=[Application(id=1, name=app1), Application(id=2, name=app2)], mapObject={1=Application(id=1, name=app1), 2=Application(id=2, name=app2)})
评论