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 ...
随机推荐
- [HUBUCTF 2022 新生赛]simple_RE
[HUBUCTF 2022 新生赛]simple_RE 查壳,64位 找main函数,F5查看伪代码,简单分析一下 int __cdecl main(int argc, const char **ar ...
- 常用语言的线程模型(Java、go、C++、python3)
背景知识 软件是如何驱动硬件的? 硬件是需要相关的驱动程序才能执行,而驱动程序是安装在操作系统内核中.如果写了一个程序A,A程序想操作硬件工作,首先需要进行系统调用,由内核去找对应的驱动程序驱使硬件工 ...
- 【渗透测试】Cobalt Strike制作钓鱼邮件渗透Windows
目标 在kali中使用Cobalt Strike制作钓鱼邮件,对Windows进行渗透 机器环境 kali(服务端):192.168.175.129 win11(攻击机):192.168.175.12 ...
- 烧死10亿脑细胞的SQL长啥样?
1 前言 今天在生产中碰到了一个让我十分费解的 SQL,十分有趣. 2 现象 SQL 很好复现,就是逻辑看起来有点唬人 postgres=# create table test(id1 int,id2 ...
- 2021-7-30 MySql进阶2
创建临时表只需在table前面加temporary CREATE TEMPORARY TABLE mytable#创建临时表,在断开数据库连接时销毁 ( ID INT NOT NULL, userna ...
- C# DateTime 时间格式化
今天做任务的时候,数据库日期拼写需要 从凌晨到晚上最后一秒,但是传过来的日期数据是 当前的时间,下面是我尝试的解决方案. endTime.ToString("yyyy-MM-dd 23:59 ...
- 微服务集成RabbitMq保姆级教程
本文通过简单的示例代码和说明,让读者能够了解微服务如何集成RabbitMq 之前的教程 https://www.cnblogs.com/leafstar/p/17641358.html 在这里我将介绍 ...
- 《Linux基础》04. 用户管理 · 用户组 · 相关文件 · 权限管理
@ 目录 1:用户管理指令 1.1:添加用户 1.2:修改用户密码 1.3:用户切换与注销 1.4:删除用户 1.5:查询用户信息 1.6:查看当前登录用户 1.7:查看有哪些用户 2:用户组指令 2 ...
- 《CTFshow-Web入门》03. Web 21~30
@ 目录 web21 题解 原理 web22 题解 原理 web23 题解 原理 web24 题解 原理 web25 题解 原理 web26 题解 web27 题解 web28 题解 web29 题解 ...
- DevOps |研发效能之环境、程序、配置、SQL变更管理
本文主要是讲如何建立有效的环境.程序.配置.SQL变更和管理平台. 几天前和一个朋友聊到环境.程序的配置变更,SQL变更和整个上线流程.之前我们在这块也做了很多,有做的好的也有做的一般的,借机都总结 ...