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)手动格式化后的结果

最新文章

  1. VirtualBox中Ubuntu 14.04屏幕分辨率不能设置的问题
  2. User and User Groups in Linux
  3. Android Tips: 打电话和发短信
  4. c++序列化方法
  5. java观察者模式的实现
  6. 请用fontAwesome代替网页icon小图标
  7. asp.net 邮件发送类
  8. strcpy(),string使用问题
  9. 图像色彩空间YUV和RGB的差别
  10. 手动替换GCC版本
  11. VS2010程序打包操作(超详细的)
  12. Craig可能是个冲浪爱好者
  13. Xcode8注释有时会失效的解决方法
  14. python_如何通过实例方法名字调用方法?
  15. mysql-笔记-命名、索引规范
  16. yii2.0 邮件发送如何配置
  17. A Bayesian Approach to Deep Neural Network Adaptation with Applications to Robust Automatic Speech Recognition
  18. php WNMP(Windows+Nginx+Mysql+php)配置笔记
  19. python 时间模块 -- time
  20. 《编写可维护的javascript》读书笔记(上)

热门文章

  1. 执行sql查询,并查看语句执行花费时间
  2. login-Linux必学的60个命令
  3. 黑阀 adb 命令
  4. 查看python安装位置和已安装库的相关操作
  5. AtCoder F - Exhausted?
  6. svn使用方法以及使用教程
  7. Java笔记 - 基础语法简介
  8. SPSS实例教程:多重线性回归,你用对了么
  9. python collections模块 之 ChainMap
  10. [CQOI2009]叶子的染色【性质+树形Dp】