读取复杂结构的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 ...
随机推荐
- java笔试之放苹果
题目描述:M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法. 输入:每个用例包含二个整数M和N.0<=m< ...
- Easy Excel导出
@GetMapping(value = "/down2") public void down2(HttpServletResponse response) throws Excep ...
- DataTime 和 时间转化
如果知道tostring 的字符串格式那么可以根据字符串格式转化成 DateTime string timeText = DateTime.Now.ToString("yy/MM/dd HH ...
- Idea安装Mevn
1.下载mevn安装包. 下载地址:http://maven.apache.org/ 点击Download 2.下面这两个选哪个都可以,取决于你用什么方式解压 3.把下载好的安装包解压到一个没有中文的 ...
- 廖雪峰Java13网络编程-3其他-1HTTP编程
1.HTTP协议: Hyper Text Transfer Protocol:超文本传输协议 基于TCP协议之上的请求/响应协议 目前使用最广泛的高级协议 * 使用浏览器浏览网页和服务器交互使用的就是 ...
- fetchSql是3.2.3新增的连贯操作方法,用于直接返回SQL而不是执行查询。
fetchSql是3.2.3新增的连贯操作方法,用于直接返回SQL而不是执行查询. 例如: $result = M('User')->fetchSql(true)->find(1); 输出 ...
- JAVA 垃圾回收读书笔记
对象已死 在JAVA代码运行中,会不停的创建对象,因为内存空间不是无限的,Java虚拟机必须不停的回收无用的数据空间.那么虚拟机是怎么判断对象空间是需要被回收的呢,也就是怎么样的数据算是垃圾数据呢? ...
- Censoring【自动AC机】【水题毁我青春】【20190614】
这题简直比注水猪肉还水QAQ. 以前做过KMP的Censoring单串匹配,果断选择自动AC机w 对短串建自动AC机 长串去机子里匹配 用个栈边匹配边弹出 记得弹出一个串后把匹配点指向栈顶就ojbk ...
- 数据库DSN是什么
数据库建立好之后,要设定系统的 DSN(数据来源名称),才能让网页可以知道数据库所在的位置以及数据库相关的属性.使用DSN的好处还有,如果移动数据库档案的位置,或是换成别种类型的数据库,只要重新设定 ...
- MyEclipse使用总结——Maven项目如何启动运行发布到tomcat中[转]
前面两篇文章: 新建maven框架的web项目 以及 将原有项目改成maven框架 之后,我们已经有了maven的项目 那么 maven项目到底怎么启动呢 如果我们直接在myeclipse中按以前的启 ...