动态加载properties文件内容,不需要重启服务!

1 、Maven 工程,在resource下新建一个properties文件

target/classes/config.properties

user=dufy
phoneNo=123456789

2、新建解析properties文件的工具类

package com.dufy.util;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Collection;
import java.util.Properties;/*** ** @author:dufyun* @version:1.0.0* @date 2017/11/16* @update:[日期YYYY-MM-DD] [更改人姓名][变更描述]*/
public class PropertiesUtil {private static Logger log = LoggerFactory.getLogger(PropertiesUtil.class);private static final String CONFIG_NAME = "config.properties";private static Properties prop;private static Long lastModified = 0L;/*** 初始化加载配置文件*/private static void init() {prop = new Properties();String filepath = PropertiesUtil.class.getClassLoader().getResource(CONFIG_NAME).getPath();log.info(filepath);FileInputStream fis = null;try {fis = new FileInputStream(filepath);prop.load(fis);} catch (IOException e) {log.error(CONFIG_NAME +"载入系统路径资源文件错误!");e.printStackTrace();}finally {try {if(fis != null){fis.close();}} catch (IOException e) {e.printStackTrace();}}}/*** 判断配置文件是否改动* @return returnValue :true:改动过 ,false:没有改动过*/private static boolean isPropertiesModified() {boolean returnValue = false;File file = new File(PropertiesUtil.class.getClassLoader().getResource(CONFIG_NAME).getPath());if (file.lastModified() > lastModified) {log.info("修改CONFIG_NAME:{} 配置文件",CONFIG_NAME);lastModified=file.lastModified();returnValue = true;}return returnValue;}/*** 根据key获取配置文件中的值* @param key key值* @return 返回value*/private static String getPropertyValue(String key) {if (prop == null || isPropertiesModified()) {init();}String value = prop.get(key).toString();log.info("根据key获取value值, key:{} ,value:{}",key,value);return value;}/*** 获取配置文件中所有的value值* @return 所有配置的value值*/private static String getPropertyAllValue() {if (prop == null || isPropertiesModified()) {init();}Collection<Object> values = prop.values();log.info("CONFIG_NAME :{},配置的所有的values:{}",CONFIG_NAME,values.toString());return values.toString();}/*** 验证登录的手机号是否为测试手机号* @param phoneNo 登录手机号* @return true: 是测试账户, false:不是测试账户*/public static boolean validateLoginNo(String phoneNo){boolean flag = false;String allValue = getPropertyAllValue();if(allValue.contains(phoneNo)){flag = true;}return flag;}public static void main(String[] args) {while (true){try {Thread.sleep(2000);System.out.println("validateLoginNo :  " +  validateLoginNo("123456789"));} catch (InterruptedException e) {e.printStackTrace();}}}}

3、测试代码

  public static void main(String[] args) {while (true){try {Thread.sleep(2000);System.out.println("validateLoginNo :  " +  validateLoginNo("123456789"));} catch (InterruptedException e) {e.printStackTrace();}}}

启动服务,然后控制台打印
validateLoginNo : true;

然后在服务运行中,修改下面内容!

/target/classes/config.properties
phoneNo=987654321

validateLoginNo :  true
16:22:43.652 [main] INFO  c.s.m.l.c.c.util.PropertiesUtil - 修改CONFIG_NAME:config.properties 配置文件
16:22:43.653 [main] INFO  c.s.m.l.c.c.util.PropertiesUtil - CONFIG_NAME :config.properties,配置的所有的values:[987654321]
validateLoginNo :  false

如果您觉得这篇博文对你有帮助,请点个赞,谢谢!

如果帅气(美丽)、睿智(聪颖),和我一样简单善良的你看到本篇博文中存在问题,请指出,我虚心接受你让我成长的批评,谢谢阅读!
祝你今天开心愉快!


欢迎访问我的csdn博客,我们一同成长!

不管做什么,只要坚持下去就会看到不一样!在路上,不卑不亢!

博客首页:http://blog.csdn.net/u010648555

java不重启服务动态加载properties文件相关推荐

  1. java加载js_[Java教程]javascript如何动态加载js文件

    [Java教程]javascript如何动态加载js文件 0 2016-01-01 00:00:52 javascript如何动态加载js文件: 有时候我们需要根据需要动态加载js文件,本章节就简单介 ...

  2. java加载properties文件的几种方式,java高级面试笔试题

    我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...

  3. Spring加载properties文件的两种方式

    2019独角兽企业重金招聘Python工程师标准>>> 在项目中如果有些参数经常需要修改,或者后期可能需要修改,那我们最好把这些参数放到properties文件中,源代码中读取pro ...

  4. 使用单例模式加载properties文件

    使用单例模式加载properties文件 @(JAVA)[java] * 这里只是用于示范单例模式,更好的办法是使用java.util.ResourceBundle解释proerties文件.详见ja ...

  5. 使用ResourceBundle加载properties文件

    使用ResourceBundle加载properties文件 @(JAVA)[java] 1.ResourceBundle介绍 说的简单点,这个类的作用就是读取资源属性文件(properties),然 ...

  6. spring配置中加载properties文件方法

    首先,遇到一个问题,spring配置中加载properties文件配置如下: <context:property-placeholder ignore-unresolvable="tr ...

  7. ExtJS4.x动态加载js文件

    动态加载js文件是ext4.x的一个新特性,可以有效的减少浏览器的压力,提高渲染速度.如动态加载自定义组件 1.在js/extjs/ux目录下,建立自定义组件的js文件. 2.编写MyWindow.j ...

  8. JavaScript动态加载js文件

    /********************************************************************** JavaScript动态加载js文件* 说明:* 之前没 ...

  9. linux 下创建并动态加载.so 文件

    最简单的生成, 动态加载.so 文件的例子 //test.cpp #ifndef _TEST_H    #define _TEST_H       #include <iostream> ...

最新文章

  1. python列表去重_Python中对列表list去重
  2. mysql8.0.15调优_Mysql 8.0 参数调优
  3. POJ - 2411 Mondriaan's Dream(状压dp)
  4. OpenFOAM流固耦合问题-FsiFoam(foam-extend-4.0)运行tutorials的bug修复
  5. 限制 TEdit 只能接收 数字 输入...
  6. 生成子集——二进制法
  7. kafka数据可靠传输
  8. arraylist扩容是创建新数组吗 java_Java 基础数据结构分析
  9. php文本框限制字节,js限制文本框输入长度两种限制方式(长度、字节数)_基础知识...
  10. FindWindowEx的应用
  11. MyBatis:Pagehelper分页
  12. 手机12306买卧铺下铺技巧_12306订下铺有什么技巧?
  13. 电脑使用python操控安卓手机
  14. NOI题库答案(1.1 编程基础之输入输出)
  15. 南京大学2019计算机学院复试名单,南京大学计算机科学与技术系2019考研复试名单...
  16. 特斯拉又起火燃烧,一人死亡!公司又处于负面新闻中,马斯克到底有多难?
  17. [PyTroch系列-3]:PyTorch基础 - Hello World程序与张量(Tensor)概述
  18. IOTA Silicone
  19. unable to connect to 192.168.1.110:5555 解决办法
  20. 计算机中ram和rom的区别是什么意思,Rom容量是什么意思?和Ram容量有什么区别?...

热门文章

  1. 陨石VR体验馆落户北京 碧鬼REAL论坛带来真知识分享
  2. UE4C++ 创建UI
  3. 【练习】爬取当当网中的好评榜图书信息,显示并保存为excel文件
  4. Lego MindStorms NXT 井字棋机器人算法讨论
  5. windows linux 化,Xming —— 从 Windows 系统管理图像化的 Linux 应用程序
  6. 10/20新生研讨课心得
  7. PySCENIC(三):pyscenic单细胞转录因子分析可视化
  8. 深入理解C语言关键字用法
  9. css取第一个孩子,CSS:第n个孩子():后(css :nth-child() :after)
  10. 网络/Network - 网络安全 - 常见web攻击与防护