动态修改properties文件小问题

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

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

你可能感兴趣的:(动态修改properties文件小问题)