前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot-读取配置文件(工具类法)

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

作者头像
Damon小智
发布2024-02-03 10:49:40
1540
发布2024-02-03 10:49:40
举报
文章被收录于专栏:全栈文档库全栈文档库

本文是关于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。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-6-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档