disconf可以配置reload,当更改配置时自动刷新classpath下的配置文件。然而获取最新的值官方说明是加@DisconfFileItem注解放在属性的方法上,底层通过拦截器获取的。

但是每个属性都要定义一个属性,其实是一件很繁琐的事情。

所以,以下提供一种非官方实时获取最新值的方式。

 public class PropertiesUtils {
private static final Logger logger = LoggerFactory.getLogger(PropertiesUtils.class);
private static final String charset = "UTF-8";
private static final Properties sysProp = new Properties();
private static long lastModify = 0L;
private static File system;
private PropertiesUtils() {
throw new IllegalAccessError("Utility class");
}
static {
try {
system = new ClassPathResource("system.properties").getFile();
load(system.lastModified());
} catch (Exception e) {
logger.error("properties file load error",e);
throw new RuntimeException(e);
}
} private static void load(long updateTime) {
try {
//注意清空,否则没有新值,会使用旧值
sysProp.clear();
//获取属性
sysProp.load(new InputStreamReader(new FileInputStream(system), charset));
//获取文件修改时间
lastModify = updateTime;
} catch (IOException e) {
throw new RuntimeException(e);
}
} /**获取属性配置值
* @param name 名称
* @return
*/
public static String getProp(String name) {
long modify = system.lastModified();
if (modify > lastModify) load(modify);
return sysProp.getProperty(name);
}
}

通过判断文件是否更改,从而得到最新配置的值。

这样获取配置就不需要每个都定义一个属性了。

【非官方方式】获取Disconf动态更新的配置文件的值的更多相关文章

  1. postgresql获取表最后更新时间(通过触发器将时间写入另外一张表)

    通过触发器方式获取表最后更新时间,并将时间信息写入到另外一张表 一.创建测试表和表记录更新时间表 CREATE TABLE weather( city varchar(80), temp_lo int ...

  2. spring boot 配置文件动态更新原理 以Nacos为例

    配置文件的动态更新 通常获取配置文件的方式 1, @Value 2. @ConfigurationProperties(Prefix) 如果是在运行时要动态更新的话, 第一种方式要在bean上加@Re ...

  3. 当页面是动态时 如果后台存储id可以通过查询后台方式获取对象;当后台没有存储时候 只有通过前端标记了 例如标记数量为10 我们根据传递过来的10循环取值

    当页面是动态时 如果后台存储id可以通过查询后台方式获取对象;当后台没有存储时候 只有通过前端标记了 例如标记数量为10 我们根据传递过来的10循环取值

  4. kill -HUP pid 更改配置后不重新启动服务,动态更新配置文件

    kill -HUP pid kill -HUP pid  pid 是进程标识.如果想要更改配置而不需停止并重新启动服务,请使用该命令.在对配置文件作必要的更改后,发出该命令以动态更新服务配置. 根据约 ...

  5. [原创]一种简单的cocos2d-x动态更新方案

    介绍一个曾经在cocos2d-x项目中使用过的动态更新方案,这个方案简单易行,针对小的项目非常有用. 这个方案有两个核心的关键词:JSON,MD5. 原理可以简单地概括为:服务端持有所有动态更新资源文 ...

  6. Spring Cloud(八):使用Spring Cloud Bus来实现配置动态更新

    使用Spring Cloud Config我们能实现服务配置的集中化管理,在服务启动时从Config Server获取需要的配置属性.但如果在服务运行过程中,我们需要将某个配置属性进行修改,比如将验证 ...

  7. .NET6运行时动态更新限流阈值

    昨天博客园撑不住流量又崩溃了,很巧正在编写这篇文章,于是产生一个假想:如果博客园用上我这个限流组件会怎么样呢? 用户会收到几个429错误,并且多刷新几次就看到了内容,不会出现完全不可用. 还可以降低查 ...

  8. 微软Azure配置中心 App Configuration (三):配置的动态更新

    写在前面 我在前文: <微软Azure配置中心 App Configuration (一):轻松集成到Asp.Net Core>已经介绍了Asp.net Core怎么轻易的接入azure ...

  9. thinkphp 3.2.3 动态修改conf配置文件

    thinkphp 3.2.3 的C()方法能修改配置文件,但是是动态修改的,没有真正的更改文件. 我查了网上网友分享的方法,都不怎么合适,我就自己摸索写了一个,配置写到text.php中,我的目录如下 ...

随机推荐

  1. charles使用教程

    概述 Charles是目前最强大的http调试工具,在界面和功能上远胜于Fiddler,同时是全平台支持.是收费软件,可以试用15分钟,下面提供了破解方法.   安装破解 https://www.cn ...

  2. servlet项目找不到java文件(由于照抄代码造成的bug)

    其实这个bug非常简单,实际上是由于路径配置问题,也是由于我照抄代码造成的(好孩子不要学!) 情况是这样的:java文件没有问题但是启动项目的时候出现了bug: 然后当我把GetData.java和J ...

  3. UVA

    A network is composed of N computers connected by N - 1 communication links such that any two comput ...

  4. 快速调通支付宝当面付Demo

    1.访问如下地址: https://auth.alipay.com/login/ant_sso_index.htm?goto=https%3A%2F%2Fopenhome.alipay.com%2Fp ...

  5. FrameWork内核解析之Handler消息机制(二)

    阿里P7Android高级架构进阶视频(内含Handler视频讲解)免费学习请点击:https://space.bilibili.com/474380680 一.Handler 在Android开发的 ...

  6. Python之异常抛出机制

    异常抛出机制 : 常见的Python异常:

  7. ollvm 使用——“Cannot open /dev/random”错误的解决方法

    找到 \obfuscator-llvm-4.0\lib\Transforms\Obfuscation\CryptoUtils.cpp 这个文件, 新增两个头文件 #include <window ...

  8. tcpdump - 转储网络上的数据流

    总览 (SYNOPSIS) tcpdump [ -adeflnNOpqStvx ] [ -c count ] [ -F file ] [ -i interface ] [ -r file ] [ -s ...

  9. k8s容器-运维管理篇

    二. 运维和管理 维护参考网址 https://jimmysong.io/kubernetes-handbook/practice/install-kubernetes-on-centos.html ...

  10. logging模板

    logging模板是一个专门用来做日至系统的 缺点是不能指定编码格式 import logging#引入logging板块 logging.basicConfig(#这个日志的基本配置 level=, ...