栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

如何像spring boot一样加载配置文件

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何像spring boot一样加载配置文件

一、导入pom依赖

  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)))

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/704097.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号