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

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

本文介绍如何创建一个用于读取YAML配置文件的工具类,并展示如何通过该工具类访问配置信息。

一、创建YamlUtil工具类

为了更方便地管理和访问YAML配置文件中的数据,我们将创建一个YamlUtil类。该类将负责加载YAML文件并提供方法来获取配置项的值。

Java 实现

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) {
            log.error("Failed to load YAML data", e);
        }
    }
    
    public static String getString(String key) {
        Object value = getProperty(key);
        return value != null ? value.toString() : 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

spring:
  profiles:
    active: dev

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

application-dev.yml

server:
  port: 8080

spring:
  datasource:
    username: root  # 替换成MySQL账户
    password: root  # 替换成MySQL密码
    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

三、使用工具类读取配置

通过YamlUtil工具类,我们可以轻松地读取配置信息。下面是如何使用该工具类来获取一个配置项的示例:

String path = YamlUtil.getString("output.file_path");
System.out.println("Output Path: " + path);  // 在控制台输出检查读取结果

输出的结果应该是配置文件中指定的output路径。
通过上述步骤,我们可以高效地管理和访问应用程序的配置,确保配置的灵活性和代码的可维护性。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。