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>>的更多相关文章

  1. spring boot yaml 自定义配置 映射到 java POJO

    只需要一个注解就ok: @ConfigurationProperties("user.other") “user.other” 这个值匹配的是user下的other对象 yaml ...

  2. Spring Boot 外部化配置(二) - @ConfigurationProperties 、@EnableConfigurationProperties

    目录 3.外部化配置的核心 3.2 @ConfigurationProperties 3.2.1 注册 Properties 配置类 3.2.2 绑定配置属性 3.1.3 ConfigurationP ...

  3. YAML语法使用,JSR303数据校验

    YAML YAML是 "YAML Ain't a Markup Language" (YAML不是一种置标语言)的递归缩写 # yaml配置 server: prot: YAML语 ...

  4. Spring Boot 2.0 配置图文教程

    摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 本章内容 自定义属性快速入门 外化配置 自动配置 自定义创建 ...

  5. spring boot约定优于配置的这种做法在如今越来越流行了

    约定优于配置的这种做法在如今越来越流行了,它的特点是简单.快速.便捷.但是这是建立在程序员熟悉这些约定的前提上.而 Spring 拥有一个庞大的生态体系,刚开始转到 Spring Boot 完全舍弃 ...

  6. YAML语法基础(K8s基础)

    对于YAML语言,网上有很多将YAML转换为JSON格式的在线转换器,以下内容都可直接验证,另外若有兴趣更深入学习YAML,可到其官方站点去学习,下面介绍的仅仅是比较常用的内容,并非YAML语法的全部 ...

  7. 如何为Spring Boot应用程序配置端口

    [转]https://www.javaroad.cn/questions/11162 1 个月前 1.1通过属性文件更新 . /src/main/resources/application.prope ...

  8. Spring Cloud Consul使用——配置中心

    1.pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www ...

  9. Spring AspectJ切入点语法详解

    1.Spring AOP支持的AspectJ切入点指示符 切入点指示符用来指示切入点表达式目的,,在Spring AOP中目前只有执行方法这一个连接点,Spring AOP支持的AspectJ切入点指 ...

  10. spring AspectJ切入点语法详解 记录以便查阅

    AspectJ切入点语法详解 6.5.1  Spring AOP支持的AspectJ切入点指示符 切入点指示符用来指示切入点表达式目的,,在Spring AOP中目前只有执行方法这一个连接点,Spri ...

随机推荐

  1. async-await Rust: 200 多行代码实现一个极简 runtime

    What I cannot create, I do not understand Rust 中的 runtime 到底是咋回事, 为了彻底搞懂它, 我在尽量不借助第三方 crate 的情况下实现了一 ...

  2. 【Mybatis】学习

    Mybatis 学习 环境搭建 pom.xml <!--log4j--> <dependency> <groupId>org.slf4j</groupId&g ...

  3. linux内核编译中常用的目标(二)

    文章目录 一. 目标 all 或者 空 二. 目标 vmlinux 三. 目标 modules 四. 目标 Image/zImage/uImage 1.Image和zImage的区别 2.uImage ...

  4. switch写法详解

    我们在开发项目中经常遇到对数据的判断进行相应的逻辑(if..else  ,三元运算等),Switch 语句用来选择多个需要执行的代码块 ,一定程度上简化了if....else 1. 语法 switch ...

  5. Java 中怎样将 bytes 转换为 long 类型?

    将bytes 转换为long类型: 第一种方式: String 接收 bytes 的构造器转成 String,再 Long.parseLong: 但此种情况需要注意:字节数组中的每个字节都必须是有效的 ...

  6. Nacos启动时报错No DataSource set排查

    问题描述 最近在学习Nacos组件,使用的是最新版本:2.2.3. 在本地虚拟机CentOS 8.5.2111环境中安装Nacos,并使用standalone模式启动,同时配置使用外部MySQL数据库 ...

  7. 【心得】C51单片机_中断

    @ 目录 ①学习单片机中断总思想 ②学习单片机中断总思想 ③学习单片机中断总方法 外部中断 定时计数器中断 串行口中断 ④总结 附 ①学习单片机中断总思想 标题客观的说,学习单片机只需要掌握 I/O ...

  8. Redis从入门到放弃(9):集群模式

    前面文章我们介绍了Redis的主从模式是一种在Redis中实现高可用性的方式,但也存在一些缺点. 1.主从模式缺点 写入单点故障:在主从模式中,写入操作只能在主节点进行,如果主节点宕机,写入将无法执行 ...

  9. js判断h5页面地址的打开方式(微信、pc、移动端)

    1 function isOpenMode(){ 2 //平台.设备和操作系统 3 var system = { 4 win: false, 5 mac: false, 6 xll: false, 7 ...

  10. 通过替换dll实现后门功能的恶意代码

    通过替换Kernel32.dll来实现的后门功能的恶意代码. 该恶意代码存在一个exe可执行文件和一个dll动态链接库,需要分别进行分析 一.待解决问题 这个恶意代码执行了什么功能? 通过什么方式实现 ...