SpringBoot-读取配置文件(工具类法)

2024-02-03 10:49:40 浏览数 (2)

本文是关于Spring Boot框架下读取配置文件的指南。该指南介绍了如何通过引入SnakeYaml包建立YamlUtil工具类,直接获取应用程序的yaml配置文件的配置信息。这种方法相对于使用@Value对象映射的方法,更加方便,封装性更好。下面将讲述详细流程,如有纰漏,敬请指正!欢迎评论区评论。

一、创建YamlUtil工具类

代码语言:javascript复制
package com.util;

import org.apache.log4j.Logger;
import org.yaml.snakeyaml.Yaml;

import java.io.InputStream;
import java.util.Map;

public class YamlUtil {
    private static final Logger log = Logger.getLogger(YamlUtil.class);
    private static final String YAML_FILE_PATH = "application-dev.yml";
    private static Map<String, Object> yamlData;
    
    static {
        loadYamlData();
    }

    private static void loadYamlData() {
        Yaml yaml = new Yaml();
        try (InputStream inputStream = YamlUtil.class.getClassLoader().getResourceAsStream(YAML_FILE_PATH)) {
            yamlData = yaml.load(inputStream);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static String getString(String key) {
        Object value = getProperty(key);
        if (value != null) {
            return value.toString();
        }
        return null;
    }

    private static Object getProperty(String key) {
        String[] keys = key.split("\.");
        Object value = yamlData;
        for (String k : keys) {
            if (value instanceof Map) {
                value = ((Map<?, ?>) value).get(k);
            } else {
                return null;
            }
        }
        return value;
    }
}

二、编写配置信息

我的配置信息如下:

application.yml

代码语言:javascript复制
spring:
  profiles:
    active: dev

  thymeleaf:
    view-names: /*
    cache: false
    prefix: /WEB-INF/html

application-dev.yml

代码语言:javascript复制
server:
  port: 8080

spring:
  datasource:
    #替换成MySQL账户
    username: root
    #替换成MySQL密码
    password: root
    #替换成数据库名
    url: jdbc:mysql://localhost:3306/db_monitor?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=Asia/Shanghai
    driver-class-name: com.mysql.jdbc.Driver

  application:
    ## 注册服务名
    name: MonitorSystem


mybatis:
  mapper-locations: classpath:mappers/*Mapper.xml
  type-aliases-package: com.entity

logging:
  level:
    com:
      example:
        mapper: debug

output:
  file_path: output

三、使用工具类读取配置

代码语言:javascript复制
String path = YamlUtil.getString("output.file_path");

我们可以在控制台输出检查读取结果,这里读取的结果是output。

0 人点赞