Java resources目录下文件读取[通俗易懂]

Java resources目录下文件读取[通俗易懂]大家好,我是Godric。近期一直在从事用户中心方面的工作,作为所有系统的入口,几乎所有系统都依赖我们提供的服务,为此整个团队对外提供了两种SD

大家好,我是Godric。

近期一直在从事用户中心方面的工作,作为所有系统的入口,几乎所有系统都依赖我们提供的服务,为此整个团队对外提供了两种SDK,一种是与用户相关的登录、鉴权以及系统跳转等,另一种是主数据查询服务。

Java resources目录下文件读取[通俗易懂]

在实现sdk时,遇到了配置读取问题,公司内推荐使用apollo作为配置中心,但是有部分应用无法使用,所以需要兼容apollo以及本地配置文件的温度。

解决方式,在约定上做了规定优先读取文件,如果有配置文件,则读取文件,反之读取apollo。

配合Properties使用,同时考虑到不同环境的隔离,通过读取系统配置spring.profiles.active,进行环境隔离。以下是文件读取的具体实现,

public class PropertiesUtil extends Properties {
    private static Log log = LogFactory.getLog(PropertiesUtil.class);
    private static PropertiesUtil instance;

    public static PropertiesUtil getInstance() {
        if (instance != null) {
            return instance;
        } else {
            makeInstance();
            return instance;
        }
    }

    // 同步方法
    private static synchronized void makeInstance() {
        if (instance == null) {
            instance = new PropertiesUtil();
        }
    }

    // 加载属性文件
    private PropertiesUtil() {
        try {
            String profile = System.getProperty("spring.profiles.active");
            String classPath = "/xxx.properties";
            if (StringUtils.isNotBlank(profile)) {
                classPath = "/xxx-" + profile + ".properties";
            }
            InputStream is = this.getClass().getResourceAsStream(classPath); 
            if (is != null) {
                load(is);
                //log.info("读取本地配置文件信息:classPath="+classPath);
                is.close();
            }else{
                //log.info("本地配置文件不存在:classPath="+classPath);
            }

        } catch (Exception e) {
            //log.error("---读取属性文件出错了---");
            // e.printStackTrace();
        }
    }
}

在实现文件读取时,在获取文件流时,特别要注意文件的位置,因为文件是在resources下,所以在读取时有两种方式。

  1. 字节流
this.getClass().getResourceAsStream(classPath)

这样才完成了配置的加载,接下来就是实现配置的读取了

   /**
     * 获取属性
     *
     * @param key
     * @return
     */
    public static String getProperty(String key) {
        return
                PropertiesUtil.getInstance().getProperty(key);

    }

    /**
     * 获取属性
     *
     * @param key          属性key
     * @param defaultValue 属性value
     * @return
     */
    public static String getProperty(String key, String defaultValue) {

        return
                PropertiesUtil.getInstance().getProperty(key,defaultValue);

    }

这样在需要使用配置读取的类中可以直接使用了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/12137.html

(0)

相关推荐

  • 什么是脏读,不可重复读,幻读_什么是脏读,不可重复读,幻读

    什么是脏读,不可重复读,幻读_什么是脏读,不可重复读,幻读在了解脏读,不可重复度,幻读之前,首先要明白这三种情况的出现都是和数据库并发事务有关联的,如果所有的读写都按照队列的形式进行,就不会出现问题。 名词解析和解决方案 脏读 脏读又称无效数据读出(读出了脏

    2023-02-10
    155
  • ddl数据定义语句_数据技术的概念

    ddl数据定义语句_数据技术的概念第4章 DDL数据定义语言 4.1 创建数据库 CREATE DATABASE [IF NOT EXISTS] database_name [COMMENT database_comment] [LO

    2023-05-21
    139
  • 计算机网络 学习

    计算机网络 学习作者:CUGGZ 链接:https://juejin.cn/post/6908327746473033741 来源:稀土掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 一、

    2023-11-11
    157
  • [20221012]TNS-12543 TNSdestination host unreachable.txt[亲测有效]

    [20221012]TNS-12543 TNSdestination host unreachable.txt[亲测有效][20221012]TNS-12543 TNSdestination host unreachable.txt//今天尝试本机连接测试库,出现如下问题.sqlplus报ORA-12543: TNS

    2023-06-10
    139
  • 前端必读书_前端阅读

    前端必读书_前端阅读的确,有些标题党了。起因是微信群里,有哥们问我,你是怎么学习前端的呢?能不能共享一下学习方法。一句话也挺触动我的,我真的不算是什么大佬,对于学习前端知识,我也不能说是掌握了什么捷径。当然,我个人的学习方法这篇文章已经在写了,预计这周末会在我个人公众号发布。而在此之前,我想展(g…

    2023-03-02
    143
  • 代码怎么自学_初学者代码大全

    代码怎么自学_初学者代码大全因为本人学计算机的,所以接触过一些大佬,其中就有一名是非专业自学计算机的。不喜勿喷,如果也有想要学习代码的可以私信我,我会跟你聊聊,不敢说指教,

    2022-12-14
    290
  • Pyhton代码:将列表转换为字符串的方法

    Pyhton代码:将列表转换为字符串的方法在Pyhton中,列表(list)是一种常见的数据类型,其由一系列元素组成,每个元素可以是任意类型,包括字符串、数字、布尔值等等。而有时我们需要将列表变成字符串类型,以便更方便地进行存储、传输或展示。本文将详细介绍在Pyhton中,如何将列表转换为字符串。

    2024-09-04
    25
  • mysql面试(七)备份恢复类问题[通俗易懂]

    mysql面试(七)备份恢复类问题[通俗易懂]备份方式 逻辑备份(DB 备份到文件) 物理备份(DB 备份到 DB) 全量备份和增量备份以及差异备份 常用备份工具 名称 特点 mysqldump 最常用的逻辑备份工具,支持全量备份和条件备份 m…

    2022-12-17
    138

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注