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