当前位置: 首页 > news >正文

Springboot 指定获取自己写的配置properties文件的值

获取yml的可以参考这篇:

Springboot 指定获取出 yml文件里面的配置值

https://blog.csdn.net/qq_35387940/article/details/106209485

 

 

直接进入正题,

先创建一个 配置文件test_config.properties:


test.number=123456789

接下来获取test.number对应的值,

这里我们采取最直接的方式(也可以通过注解获取),特意准备了个工具类 PropertiesUtil.java :

package com.test.webflux.util;


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;

import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Properties;

/**
 * 配置文件读取
 *
 * @Author: JCccc
 * @Des: ElegantDay
 */
public class PropertiesUtil {

    private static Logger log = LoggerFactory.getLogger(PropertiesUtil.class);
    private static Properties props;
//项目根目录文件夹内读取
        // static {
        //     if (props == null) {
        //         props = new Properties();
        //         try {
        //             props.load(new FileInputStream("/testDemo/config/test_config.properties"));
        //         } catch (IOException e) {
        //             log.error("配置文件读取异常", e);
        //         }
        //     }
        // }

//resource文件夹内读取
       static {
           String fileName = "test_config.properties";
           props = new Properties();
           try {
               props.load(new InputStreamReader(PropertiesUtil.class.getClassLoader().getResourceAsStream(fileName), "UTF-8"));
           } catch (IOException e) {
               log.error("配置文件读取异常", e);
           }
       }

    /**
     * 根据配置文件中的key获取value
     * @param key
     * @return
     */
    public static String getProperty(String key) {
        String value = props.getProperty(key.trim());
        if (StringUtils.isEmpty(value)) {
            return null;
        }
        return value.trim();
    }

    /**
     * 根据配置文件中的key获取value (当获取不到值赋予默认值)
     * @param key
     * @param defaultValue
     * @return
     */
    public static String getProperty(String key, String defaultValue) {
        String value = props.getProperty(key.trim());
        if (StringUtils.isEmpty(value)) {
            value = defaultValue;
        }
        return value.trim();
    }


    public static void main(String[] args) {
        System.out.println("配置文件中有key&value:"+PropertiesUtil.getProperty("test.number"));
        System.out.println("配置文件无有key&value,赋予默认值"+PropertiesUtil.getProperty("test.numberNone","默认值 JCccc"));
    }
}

OK,测试下工具类的main方法:

相关文章:

  • JAVA AES加密解密工具类
  • Springboot 快速了解 事务回滚@Transactional
  • Springboot Mybatis使用pageHelper实现分页查询
  • JAVA 雪花算法 唯一ID生成工具类
  • 灵魂的拷问 怎么将代码写得让人无法维护?
  • 灵魂的拷问 Hashtable的命名
  • 运行ElasticSearch报错:uncaught exception in thread [main] org.elasticsearch.bootstrap.StartupException
  • JAVA 8 Stream 常用操作
  • JAVA 8 Stream优雅使用结合实战分析
  • mysql Error Code: 1175. You are using safe update mode and you tried to update a table without ....
  • SpringBoot 整合WebSocket 简单实战案例
  • Kafka Windows运行错误:找不到或无法加载主类 Files\kafka\kafka_2.12-2.0.0\libs\activation-1.1.1.ja r;C:\Program
  • Kafka Windows运行错误:创建消费者报错 consumer zookeeper is not a recognized option
  • Kafka Windows运行错误: Native memory allocation (mmap) failed to map 1073741824 bytes for Failed to comm
  • RedisUtils 操作五大集合 增删改查
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • [Vue CLI 3] 配置解析之 css.extract
  • Druid 在有赞的实践
  • Gradle 5.0 正式版发布
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • PAT A1092
  • Promise面试题2实现异步串行执行
  • quasar-framework cnodejs社区
  • React系列之 Redux 架构模式
  • Vue UI框架库开发介绍
  • vue-router 实现分析
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 近期前端发展计划
  • 前端学习笔记之观察者模式
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 我的业余项目总结
  • # .NET Framework中使用命名管道进行进程间通信
  • #if和#ifdef区别
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (14)Hive调优——合并小文件
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (十三)Flask之特殊装饰器详解
  • (转)JAVA中的堆栈
  • (转)可以带来幸福的一本书
  • (状压dp)uva 10817 Headmaster's Headache
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .Net 6.0 处理跨域的方式
  • .NET MVC第五章、模型绑定获取表单数据
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • /proc/stat文件详解(翻译)
  • @EventListener注解使用说明
  • @JsonFormat与@DateTimeFormat注解的使用
  • [20150629]简单的加密连接.txt
  • [3300万人的聊天室] 作为产品的上游公司该如何?
  • [C#] 基于 yield 语句的迭代器逻辑懒执行
  • [dart学习]第四篇:函数