读取复杂结构的yml配置项
1、yml配置项示例:(List的集合在第一项前面加 “-”)
rabbitmqsetting:
exchangeList:
- name: e1
type: topic
bindingList:
- routingKey: r1
queue: q1
- routingKey: r2
queue: q2
- name: e2
type: topic2
bindingList:
- routingKey: r3
queue: q3
- routingKey: r4
queue: q4
2、添加解析配置项的jar
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<version>2.0.4.RELEASE</version>
</dependency>
3、添加配置文件解析类(根据(1)分析数据结构创建实体类)
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component; import java.io.Serializable;
import java.util.List; @Component
@ConfigurationProperties("rabbitmqsetting")
public class RabbitMqSettingDate implements Serializable { private List<Exchange> exchangeList; public List<Exchange> getExchangeList() {
return exchangeList;
} public void setExchangeList(List<Exchange> exchangeList) {
this.exchangeList = exchangeList;
} @Override
public String toString() {
return "RabbitMqSettingDate{" +
"exchangeList=" + exchangeList +
'}';
}
}
4、实体类的属性名要与配置文件中key相同
import java.io.Serializable;
public class Binding implements Serializable {
private String routingKey;
private String queue;
public String getRoutingKey() {
return routingKey;
}
public void setRoutingKey(String routingKey) {
this.routingKey = routingKey;
}
public String getQueue() {
return queue;
}
public void setQueue(String queue) {
this.queue = queue;
}
@Override
public String toString() {
return "Binding{" +
"routingKey='" + routingKey + '\'' +
", queue='" + queue + '\'' +
'}';
}
}
import java.io.Serializable;
import java.util.List; public class Exchange implements Serializable { private String name;
private String type;
private List<Binding> bindingList; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getType() {
return type;
} public void setType(String type) {
this.type = type;
} public List<Binding> getBindingList() {
return bindingList;
} public void setBindingList(List<Binding> bindingList) {
this.bindingList = bindingList;
} @Override
public String toString() {
return "Exchange{" +
"name='" + name + '\'' +
", type='" + type + '\'' +
", bindingList=" + bindingList +
'}';
}
}
5、使用封装好的数据(将最外层封装的实体类注入要使用该数据的类中)
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component; @Component
public class Test implements CommandLineRunner {
@Autowired
private RabbitMqSettingDate rabbitMqSettingDate;
@Override
public void run(String... args) throws Exception {
System.out.println(rabbitMqSettingDate);
}
}
6、结果(System.out.println(data)手动格式化后的结果

读取复杂结构的yml配置项的更多相关文章
- docker内程序如何读取dockerfile和compose.yml中设置的环境变量
docker内程序如何读取dockerfile和compose.yml中设置的环境变量 背景 compose文件中配置了服务A和服务B,其中B服务调用了A服务的接口,那么B的实现代码中该如何调用A的服 ...
- spring boot 读取配置文件(application.yml)中的属性值
在spring boot中,简单几步,读取配置文件(application.yml)中各种不同类型的属性值: 1.引入依赖: <!-- 支持 @ConfigurationProperties 注 ...
- springboot项目logback.xml或者logback-spring.xml中读取不到application.yml或application.properties配置文件中的配置解决办法
在springboot项目中我们可能想要实现不同环境的日志项目配置不同,比如我想让不同环境的日志路径不同. 这时候我们很容易想: 1.到将日志路径配置在springboot的:application- ...
- 从oracle数据表中读取表结构
drop table aa_tab;create table aa_tab asselect A.TABLE_NAME 表名, A.column_name 字段名,A.data_type 数据 ...
- sql server 读取表结构
SELECT 表名 then d.name else '' end, 字段序号=a.colorder, 主键 FROM sysobjects where xtype='PK' and name in ...
- c# 怎么读取web.config中的配置项
ConfigurationManager.AppSettings["templateId"]
- [转]SQL 读取表结构
1.Sql SELECT column_name as FName,data_type as FType,CHARACTER_MAXIMUM_LENGTH as FLen from informati ...
- c语言学习之基础知识点介绍(十七):写入读取结构体、数组、结构体数组
一.结构体的写入和读取 //写入结构体 FILE *fp = fopen("/Users/ios/Desktop/1.data", "w"); if (fp) ...
- C# 结构体和List<T>类型数据转Json数据保存和读取
C# 结构体和List<T>类型数据转Json数据保存和读取 一.结构体转Json public struct FaceLibrary { public string face_name ...
随机推荐
- 解决jquery ajax在跨域访问post请求的时候,ie9以下无效(包括ie9)的问题
最近在做项目的时候遇到一个问题,就是跨域请求ajax的时候ie9以下的浏览器不可以访问,直接执行error里面的代码,但是也不报错,就上网查了查,发现了一个很好用的方法,在这里记录一下,也希望可以帮到 ...
- JS规则 较量较量(比较操作符) 两个操作数通过比较操作符进行比较,得到值为真(true)和假(false)。【>; <; >=; <=; !=;==】
较量较量(比较操作符) 我们先来做道数学题,数学考试成绩中,小明考了90分,小红考了95分,问谁考的分数高? 答: 因为"95 > 90",所以小红考试成绩高. 其中大于号& ...
- Leetcode148. Sort List排序链表
在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序. 示例 1: 输入: 4->2->1->3 输出: 1->2->3->4 示例 2: 输入 ...
- 环信Demo 导入错误
今天想导入环信的Demo 去看一看环信学习一下 谁知道导入出现这么个问题 Error:(1, 0) Minimum supported Gradle version is 3.3. Current v ...
- img属性src的特点
img属性src的特点: src=“图片地址” 成功则加载图片,失败则显示alt文字和断裂的图片 src="" 则不加载,不显示alt文字和断裂的图片 因此当图片加载失败后,$(& ...
- day1-字符串、列表
字符串操作: name = "Wills Qian" # 创建字符串变量 print(len(name)) # 打印字符串长度 print(name[0]) # 提取第一个字符W ...
- Python3基础笔记_列表
# Python 列表(List) list1 = ['physics', 'chemistry', 1997, 2000] list2 = [1, 2, 3, 4, 5] list3 = [&quo ...
- 莫烦PyTorch学习笔记(五)——模型的存取
import torch from torch.autograd import Variable import matplotlib.pyplot as plt torch.manual_seed() ...
- 19-10-29-Z
%%%ZZYY 只是因为是Z才模一下的. ZJ一下: 考试T1写了三张纸但是它死了. T2T3暴力叕写跪了. 考试一定一定不能不严密,少推两个交点是要命的啊. 就因为叕叕少开龙龙见祖宗了. 如果考试能 ...
- pycharm优化
一.版本选择 建议安装5.0版本,因为好注册,这个你懂得. 下载地址: https://confluence.jetbrains.com/display/PYH/Previous+PyCharm+Re ...