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 ...
随机推荐
- Anchored Neighborhood Regression【阅读笔记】GR全局回归
论文信息 [Anchored Neighborhood Regression for Fast Example-Based uper Resolution]-TIMOFTER, 2013, IEEE ...
- linux_mint_21 vim配置:剪贴板支持和输入法自动切换
一.vim的剪贴板支持 有的vim版本不支持系统剪切板,也就是说在vim编辑器外面复制的内容,不能够粘贴到vim中;在vim中通过yy.d.c复制剪切的内容也不能粘贴在vim编辑器外面. 这实在是有点 ...
- MAUI Blazor Android 输入框软键盘遮挡问题
前言 最近才发现MAUI Blazor Android存在输入框软键盘遮挡这个问题,搜索了一番,原来这是安卓webview一个由来已久的问题,还好有大佬提出了解决方案 AndroidBug5497Wo ...
- HTML超文本标记语言3
三.HTML表单标签 1.form标签 <form> form标签 name=表单名称,action=表单提交的地址,method=表单提交方式:get/post get/post详解: ...
- Node: Module not found: Can't resolve 'xlsx'
报错信息 解决方案 npm install xlsx --save 参考链接 https://github.com/securedeveloper/react-data-export/issues/8 ...
- java反射newInstance()带删除线的问题
从java9开始,newInstance()方法不建议使用导致idea自动画了条删除横线 解决方法: //改用getDeclaredConstructor().newInstance() Object ...
- 零基础入门——从零开始学习PHP反序列化笔记(一)
靶场环境搭建 方法一:PHPstudy搭建 GitHub地址 https://github.com/mcc0624/php_ser_Class 方法二:Docker部署 pull镜像文件 docker ...
- FJOI2022 游记
2022.3.28 省选延期,延到了4.16 2022.4.11 省选又延期,延到了5.2 FJOI 要回来了!! Day -7 开始停课了 QwQ Day -6 打摆 Day -5 打摆 不行,我不 ...
- Codespaces个性化后台服务器配置指南
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 前文概览 在前文<浏览器上写代码,4核8G微软服 ...
- 带你读论文丨Fuzzing漏洞挖掘详细总结 GreyOne
本文分享自华为云社区<[论文阅读] (03) 清华张超老师 - Fuzzing漏洞挖掘详细总结 GreyOne>,作者: eastmount. 一.传统的漏洞挖掘方法 演讲题目: 数据流敏 ...