二、配置文件com.fasterxml.jackson.dataformat jackson-dataformat-yaml 2.12.4 com.fasterxml.jackson.core jackson-core 2.12.4 com.fasterxml.jackson.dataformat jackson-dataformat-properties 2.12.4 org.projectlombok lombok 1.18.22
mqtt:
tcp: # tcp配置
port: 1883 # mqtt端口号
http: # http相关配置
enable: false # 开关
accessLog: true # http访问日志
ssl: # ssl配置
enable: false
ws: # websocket配置
enable: false # 开关
port: 8999 # 端口
path: /mqtt # ws 的访问path mqtt.js请设置此选项
三、配置文件需要映射的实体类
注意:必须提供get和set方法。否则无非获取和注入配置文件的值
package config;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.*;
import java.util.List;
import java.util.Map;
@Data
@ToString
public class BootstrapConfig {
@JsonProperty("mqtt")
private MqttConfig mqttConfig;
@ToString
public static class MqttConfig {
@JsonProperty("tcp")
private TcpConfig tcpConfig;
@JsonProperty("http")
private HttpConfig httpConfig;
@JsonProperty("ws")
private WebsocketConfig websocketConfig;
}
@Data
@ToString
public static class TcpConfig {
private Integer port;
}
@Data
@ToString
public static class HttpConfig {
private boolean enable;
private boolean accessLog;
private SslContext ssl;
}
@Data
@ToString
public static class WebsocketConfig {
private Integer port;
private String path;
private boolean enable;
}
@Data
@ToString
public static class SslContext {
private Boolean enable;
}
}
四、加载配置文件
package config;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.javaprop.JavaPropsFactory;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
import java.io.File;
public class LoadConfig {
public static class FileExtension{
public static final String PROPERTIES_SYMBOL = ".properties";
public static final String YAML_SYMBOL_1 = ".yaml";
public static final String YAML_SYMBOL_2 = ".yml";
}
public static void main(String[] args) {
BootstrapConfig config = null;
String path = "D:\lihua\smqtt\configformat\src\main\resources\config.yaml";
if (path.endsWith(FileExtension.PROPERTIES_SYMBOL)) {
ObjectMapper mapper = new ObjectMapper(new JavaPropsFactory());
try {
config = mapper.readValue(new File(path), BootstrapConfig.class);
} catch (Exception e) {
System.out.println("properties 配置文件读取错误");
}
} else if (path.endsWith(FileExtension.YAML_SYMBOL_1) || path.endsWith(FileExtension.YAML_SYMBOL_2)) {
ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
try {
config = mapper.readValue(new File(path), BootstrapConfig.class);
} catch (Exception e) {
System.out.println("yaml 配置文件读取错误");
return;
}
} else {
System.out.println("不支持该类型的配置文件");
}
System.out.println(config.toString());
}
}
五、加载结果
BootstrapConfig(mqttConfig=BootstrapConfig.MqttConfig(tcpConfig=BootstrapConfig.TcpConfig(port=1883), httpConfig=BootstrapConfig.HttpConfig(enable=false, accessLog=true, ssl=BootstrapConfig.SslContext(enable=false)), websocketConfig=BootstrapConfig.WebsocketConfig(port=8999, path=/mqtt, enable=false)))



