折腾了很久,记录下。
配置如下:
# 自定义数据上报信息
xx:
# 机组信息
machine1s:
- name: XXXX
frequency: null
frequency-unit: null
pressure: 0.01
pressure-unit: Pa
flow: 0
flow-unit: NM3/H
state: 停机
runtime: 17.5
runtime-unit: 天
- name: XXXX
frequency: 42.4
frequency-unit: HZ
pressure: 0.39
pressure-unit: Pa
flow: 4730
flow-unit: NM3/H
state: 运行
runtime: 12.5
runtime-unit: 天
- name: XXXX
frequency: 46.4
frequency-unit: HZ
pressure: 0.00
pressure-unit: Pa
flow: 0
flow-unit: NM3/H
state: 停机
runtime: 8.2
runtime-unit: 天
- name: XXXX
frequency: 41.4
frequency-unit: HZ
pressure: 0.39
pressure-unit: Pa
flow: 9532
flow-unit: NM3/H
state: 运行
runtime: 3.2
runtime-unit: 天
- name: XXXX
frequency: null
frequency-unit: null
pressure: 0.38
pressure-unit: Pa
flow: 4800
flow-unit: NM3/H
state: 停机
runtime: 20.4
runtime-unit: 天
- name: XXXX
frequency: null
frequency-unit: null
pressure: 0.01
pressure-unit: Pa
flow: 0
flow-unit: NM3/H
state: 停机
runtime: 7.5
runtime-unit: 天
1.定义配置类
@ConfigurationProperties(prefix = "xx")
public class TXMachinesProperties {
private List<Map<String, String>> machine1s;
public List<Map<String, String>> getMachine1s() {
return machine1s;
}
public void setMachine1s(List<Map<String, String>> machine1s) {
this.machine1s = machine1s;
}
}
注意:
a.这里prefix写到接收对象的前一级即可;
b.这里的变量名必须要与配置的名称一致,才可自动接收。
2.定义启动的配置类,这里其实可与上面的配置类写在一起,但是一个类就是做一件事情,就做了隔离。
@Configuration
@EnableConfigurationProperties({TXMachinesProperties.class})
public class TXMachinesConfig {
}
3.使用方式。
采用下面的方式即可。这里注意,由于使用这个yml的注解是属于SpringBoot的框架内进行的,因此这个属性注入只能在标有Spring的注解的类的范围内使用,不能在普通类使用。
@Autowired
private TXWorkShopAlarmProperties txWorkShopAlarmProperties;
如还不能解决,欢迎咨询。