Spring @ConfigurationProperties Yaml语法配置List和Map:List<String>、List<Obj>、List<List<Obj>>、Map<String,String>、Map<String,List<String>>、Map<String,Obj>、Map<String,List<Obj>>
yaml语法
数据结构可以用类似大纲的缩排方式呈现,结构通过缩进来表示,连续的项目通过减号“-”来表示,map结构里面的key/value对用冒号“:”来分隔。
例子:
配置类 YmalConfig:
import cn.hutool.json.JSONUtil;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
@Data
@Component
@EnableConfigurationProperties
@ConfigurationProperties(prefix = "testymal")
public class YmalConfig {
private String configName;
private UserInfo userInfo;
private List<String> lists;
private List<UserInfo> listUserInfo;
private List<List<UserInfo>> listUserInfos;
private Map<String,String> maps;
private Map<String,List<String>> mapList;
private Map<String,UserInfo> mapUser;
private Map<String,List<UserInfo>> mapUserList;
@Override
public String toString() {
return JSONUtil.toJsonStr(this);
}
}
用户信息 UserInfo:
import lombok.Data;
@Data
public class UserInfo {
private Integer userId;
private String userName;
}
日志输出(这个类是用来 打印配置) LogConfig:
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
@Slf4j
@Component
public class LogConfig implements CommandLineRunner {
@Autowired
YmalConfig ymalConfig;
@Override
public void run(String... args) throws Exception {
log.info("ymalConfig 日志打印配置 : {}", ymalConfig);
}
}
yml配置文件:
testymal:
# String configName
configName: 我是ymal配置
# UserInfo userInfo
userInfo:
userId: 123
userName: 张三
# List<String> lists
lists:
- 1
- 2
- 3
- 4
# List<UserInfo> listUserInfo
listUserInfo:
- userId: 123
userName: 张三
- userId: 321
userName: 李四
# List<List<UserInfo>> listUserInfos
listUserInfos:
-
- userId: 123
userName: 张三
- userId: 321
userName: 李四
-
- userId: 456
userName: 王五
- userId: 654
userName: 赵六
# Map<String,String> maps
maps:
id: 我是id
name: 我是name
age: 我是age
# Map<String,List<String>> mapList
mapList:
userIds:
- 123
- 321
ips:
- 127.0.0.1
- 127.0.0.2
# Map<String,UserInfo> mapUser
mapUser:
123:
userId: 123
userName: 张三
321:
userId: 321
userName: 李四
# Map<String,List<UserInfo>> mapUserList
mapUserList:
A:
- userId: 123
userName: 张三
- userId: 321
userName: 李四
B:
- userId: 456
userName: 王五
- userId: 654
userName: 赵六
控制台日志打印
ymalConfig 日志打印配置 : {"configName":"我是ymal配置","userInfo":{"userId":123,"userName":"张三"},"lists":["1","2","3","4"],"listUserInfo":[{"userId":123,"userName":"张三"},{"userId":321,"userName":"李四"}],"listUserInfos":[[{"userId":123,"userName":"张三"},{"userId":321,"userName":"李四"}],[{"userId":456,"userName":"王五"},{"userId":654,"userName":"赵六"}]],"maps":{"id":"我是id","name":"我是name","age":"我是age"},"mapList":{"userIds":["123","321"],"ips":["127.0.0.1","127.0.0.2"]},"mapUser":{"123":{"userId":123,"userName":"张三"},"321":{"userId":321,"userName":"李四"}},"mapUserList":{"A":[{"userId":123,"userName":"张三"},{"userId":321,"userName":"李四"}],"B":[{"userId":456,"userName":"王五"},{"userId":654,"userName":"赵六"}]}}
把控制台打印的日志 :Json格式字符串,格式化后,效果如下:
{
"configName": "我是ymal配置",
"listUserInfo": [
{
"userId": 123,
"userName": "张三"
},
{
"userId": 321,
"userName": "李四"
}
],
"listUserInfos": [
[
{
"userId": 123,
"userName": "张三"
},
{
"userId": 321,
"userName": "李四"
}
],
[
{
"userId": 456,
"userName": "王五"
},
{
"userId": 654,
"userName": "赵六"
}
]
],
"lists": [
"1",
"2",
"3",
"4"
],
"mapList": {
"ips": [
"127.0.0.1",
"127.0.0.2"
],
"userIds": [
"123",
"321"
]
},
"mapUser": {
"123": {
"userId": 123,
"userName": "张三"
},
"321": {
"userId": 321,
"userName": "李四"
}
},
"mapUserList": {
"A": [
{
"userId": 123,
"userName": "张三"
},
{
"userId": 321,
"userName": "李四"
}
],
"B": [
{
"userId": 456,
"userName": "王五"
},
{
"userId": 654,
"userName": "赵六"
}
]
},
"maps": {
"age": "我是age",
"id": "我是id",
"name": "我是name"
},
"userInfo": {
"userId": 123,
"userName": "张三"
}
}
done.
Spring @ConfigurationProperties Yaml语法配置List和Map:List<String>、List<Obj>、List<List<Obj>>、Map<String,String>、Map<String,List<String>>、Map<String,Obj>、Map<String,List<Obj>>的更多相关文章
- spring boot yaml 自定义配置 映射到 java POJO
只需要一个注解就ok: @ConfigurationProperties("user.other") “user.other” 这个值匹配的是user下的other对象 yaml ...
- Spring Boot 外部化配置(二) - @ConfigurationProperties 、@EnableConfigurationProperties
目录 3.外部化配置的核心 3.2 @ConfigurationProperties 3.2.1 注册 Properties 配置类 3.2.2 绑定配置属性 3.1.3 ConfigurationP ...
- YAML语法使用,JSR303数据校验
YAML YAML是 "YAML Ain't a Markup Language" (YAML不是一种置标语言)的递归缩写 # yaml配置 server: prot: YAML语 ...
- Spring Boot 2.0 配置图文教程
摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 本章内容 自定义属性快速入门 外化配置 自动配置 自定义创建 ...
- spring boot约定优于配置的这种做法在如今越来越流行了
约定优于配置的这种做法在如今越来越流行了,它的特点是简单.快速.便捷.但是这是建立在程序员熟悉这些约定的前提上.而 Spring 拥有一个庞大的生态体系,刚开始转到 Spring Boot 完全舍弃 ...
- YAML语法基础(K8s基础)
对于YAML语言,网上有很多将YAML转换为JSON格式的在线转换器,以下内容都可直接验证,另外若有兴趣更深入学习YAML,可到其官方站点去学习,下面介绍的仅仅是比较常用的内容,并非YAML语法的全部 ...
- 如何为Spring Boot应用程序配置端口
[转]https://www.javaroad.cn/questions/11162 1 个月前 1.1通过属性文件更新 . /src/main/resources/application.prope ...
- Spring Cloud Consul使用——配置中心
1.pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www ...
- Spring AspectJ切入点语法详解
1.Spring AOP支持的AspectJ切入点指示符 切入点指示符用来指示切入点表达式目的,,在Spring AOP中目前只有执行方法这一个连接点,Spring AOP支持的AspectJ切入点指 ...
- spring AspectJ切入点语法详解 记录以便查阅
AspectJ切入点语法详解 6.5.1 Spring AOP支持的AspectJ切入点指示符 切入点指示符用来指示切入点表达式目的,,在Spring AOP中目前只有执行方法这一个连接点,Spri ...
随机推荐
- Windows同时安装多个JDK
一.下载并安装JDK这一步选择你需要的JDK并下载安装,记得要记住安装的路径. 二.为JDK配置环境变量①找到系统环境变量 ②新建如下三个环境变量 第一个表示默认Java的home路径,以后在更改JD ...
- 2023年陕西彬州第八届半程马拉松赛153pb完赛
1.赛事背景 2023年6月3日,我参加了2023陕西彬州第八届半程马拉松赛,最终153完赛,PB了5分钟.起跑时间早上7点30分,毕竟6月天气也开始热了.天气预报显示当天还是小到中雨,上次铜川宜君半 ...
- Mediabox:年度最佳音视频开发工具
"2023稀土开发者大会"落下帷幕,由稀土掘金社区评选的的掘金技术引力榜重磅出炉,共有22个优秀实践案例上榜,涵盖对技术行业发展有特别贡献的人物.开发工具.开源项目.技术团队和技术 ...
- 【WebGL系列-02】创建program上下文
WebGL程序program对象的创建 program对象由顶点着色器对象和片元着色器对象构成,因此,创建program对象包含了两部分,一个是着色器对象的创建,一个是program对象的创建. 总体 ...
- 学习 HBase
1 由来 HBase 应大数据而生,是Apache Hadoop项目孵化而来的一种NoSQL数据库,HBase 是 Hadoop Database 的简称. 它的出现有以下几个原因: 大数据时代的到来 ...
- 管理虚拟环境——virtualenvwrapper
1.安装virtualenvwrapper 输入命令:pip install -i https://pypi.douban.com/simple/ virtualenv //下载virtualenvw ...
- Wampserver64 报错:无法启动此程序,因为计算机中丢失 MSVCR110.dll。尝试重新安装该程序以解决此问题。
缺少环境配置, 程序下载地址如下: https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=30679 点击下载,下载完成后,双击程 ...
- 【技术实战】Vue功能样式实战【六】
需求实战一 样式展示 代码展示 <template> <ARow> <ACol style="background-color:#F1F4F5 "&g ...
- HDU 3829 Cat VS Dog 猫和狗(二分图)结题报告
听学长说这道题很ex,但是思路想到的话还是挺简单的. 可能是受上一道题(放置机器人)的启发,也是找互相冲突的点连线. 但是并不是完全一样(废话)放置机器人那道题是找到冲突点连线后直接求最大匹配即可. ...
- C#中多线程的用法
1.在C#中使用多线程可以使用Thread 代码例子: public class ThreadExample { public static void ThreadProc() { for (int ...