动态修改properties文件

动态修改properties文件小问题

前几天有个小需求大概意思是:通过MQ和动态修改配置文件,达到动态控制前后端版本号统一。动态修改配置文件之前觉得是一个很简单的需求,可是真正开始做的时候一脚就踩坑里了。

当我们读取的时候经常会使用ClassLoader.getResourceAsStream()去读文件,但是这样当我们想要去修改文件再重新读取的时候就会出现数据不同步的情况。原因很简单,这个方式会导致读取的文件保存在缓存中!每当重新执行语句的时候,将会直接缓存拿这个文件,而不去访问文件本身。
为了解决这个问题,最好的办法就是不去使用ClassLoader.getResourceAsStream();我们可以使用FileInputStream直接对文件本身进行读写。但是问题又来了,这个方式需要我们提供文件的绝对路径 ,但是很多情况下,我们只想通过文件的相对路径去找到文件,那如何解决新问题呢?
经过查阅资料,我发现了我忽视了一个很重要点——通过Thread.currentThread().getContextClass().getResource(“文件名”).getPath();
即可得到文件的详细路径包括名称虽然本质上也是拿的绝对路径,但是效果上动态了很多,当然可以根据自己的需要去进行功能的调整。个人感觉写工具类什么的还是很灵活的,实现需求是主要的,对应需求为主即可。优化都是实现功能之后的事情啦~~

还有

将 配置写在 .properties文件中的好处:可以动态的读取文件中的值,即项目启动中修改配置的值也可以,但是读取的时候需要按照上面的配置去进行配置才行。 写Constants这个常量类里面就不能这样做。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值