java不重启服务动态加载properties文件
动态加载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文件相关推荐
- java加载js_[Java教程]javascript如何动态加载js文件
[Java教程]javascript如何动态加载js文件 0 2016-01-01 00:00:52 javascript如何动态加载js文件: 有时候我们需要根据需要动态加载js文件,本章节就简单介 ...
- java加载properties文件的几种方式,java高级面试笔试题
我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...
- Spring加载properties文件的两种方式
2019独角兽企业重金招聘Python工程师标准>>> 在项目中如果有些参数经常需要修改,或者后期可能需要修改,那我们最好把这些参数放到properties文件中,源代码中读取pro ...
- 使用单例模式加载properties文件
使用单例模式加载properties文件 @(JAVA)[java] * 这里只是用于示范单例模式,更好的办法是使用java.util.ResourceBundle解释proerties文件.详见ja ...
- 使用ResourceBundle加载properties文件
使用ResourceBundle加载properties文件 @(JAVA)[java] 1.ResourceBundle介绍 说的简单点,这个类的作用就是读取资源属性文件(properties),然 ...
- spring配置中加载properties文件方法
首先,遇到一个问题,spring配置中加载properties文件配置如下: <context:property-placeholder ignore-unresolvable="tr ...
- ExtJS4.x动态加载js文件
动态加载js文件是ext4.x的一个新特性,可以有效的减少浏览器的压力,提高渲染速度.如动态加载自定义组件 1.在js/extjs/ux目录下,建立自定义组件的js文件. 2.编写MyWindow.j ...
- JavaScript动态加载js文件
/********************************************************************** JavaScript动态加载js文件* 说明:* 之前没 ...
- linux 下创建并动态加载.so 文件
最简单的生成, 动态加载.so 文件的例子 //test.cpp #ifndef _TEST_H #define _TEST_H #include <iostream> ...
最新文章
- python列表去重_Python中对列表list去重
- mysql8.0.15调优_Mysql 8.0 参数调优
- POJ - 2411 Mondriaan's Dream(状压dp)
- OpenFOAM流固耦合问题-FsiFoam(foam-extend-4.0)运行tutorials的bug修复
- 限制 TEdit 只能接收 数字 输入...
- 生成子集——二进制法
- kafka数据可靠传输
- arraylist扩容是创建新数组吗 java_Java 基础数据结构分析
- php文本框限制字节,js限制文本框输入长度两种限制方式(长度、字节数)_基础知识...
- FindWindowEx的应用
- MyBatis:Pagehelper分页
- 手机12306买卧铺下铺技巧_12306订下铺有什么技巧?
- 电脑使用python操控安卓手机
- NOI题库答案(1.1 编程基础之输入输出)
- 南京大学2019计算机学院复试名单,南京大学计算机科学与技术系2019考研复试名单...
- 特斯拉又起火燃烧,一人死亡!公司又处于负面新闻中,马斯克到底有多难?
- [PyTroch系列-3]:PyTorch基础 - Hello World程序与张量(Tensor)概述
- IOTA Silicone
- unable to connect to 192.168.1.110:5555 解决办法
- 计算机中ram和rom的区别是什么意思,Rom容量是什么意思?和Ram容量有什么区别?...
热门文章
- 陨石VR体验馆落户北京 碧鬼REAL论坛带来真知识分享
- UE4C++ 创建UI
- 【练习】爬取当当网中的好评榜图书信息,显示并保存为excel文件
- Lego MindStorms NXT 井字棋机器人算法讨论
- windows linux 化,Xming —— 从 Windows 系统管理图像化的 Linux 应用程序
- 10/20新生研讨课心得
- PySCENIC(三):pyscenic单细胞转录因子分析可视化
- 深入理解C语言关键字用法
- css取第一个孩子,CSS:第n个孩子():后(css :nth-child() :after)
- 网络/Network - 网络安全 - 常见web攻击与防护