gpt4 book ai didi

JAVA多次读取属性文件进行属性更改

转载 作者:行者123 更新时间:2023-11-30 07:17:19 27 4
gpt4 key购买 nike

我有一个要求,需要从给定位置读取属性文件。触发器是一个 quartz 作业,并且在一个长时间运行的过程中

在这种情况下:假设该作业每 10 分钟触发一次。

1:00AM trigger1  -> read config.properties -> other logic

1:10AM trigger2 -> read config.properties -> other logic

我们的要求之一是我们需要能够在触发器 1 和 2 之间更改 config.properties 中的值,以确保 2 使用与 1 不同的配置。

我用 java Properties 类和 apache commons 配置库尝试了这一点,发现一旦从第一次触发作业中读取属性文件,所有后续读取的属性文件都不会选择该文件中的后续更改。这是那些 java 库的设计还是我以错误的方式进行测试?

最佳答案

第一个答案:这样做应该没有任何问题。您需要做的就是在您的应用程序中提供“钩子(Hook)”,驱动您的应用程序重新打开属性文件; 重新读取内容,然后更新/重建应用程序所依赖的 Properties 对象。从概念上讲没有什么可以阻止这种情况 - 我过去已经编写过此类解决方案。

但是,再想一想:从长远来看,我怀疑这是否是一个稳健的设计。您会看到,当我将属性设置为“可重新加载”时,这仅用于测试目的。例如,我希望能够快速更改超时值;无需重新启动整个堆栈。

您在这里想要做的事情完全不同。您想要“劫持”一种从未用于此类用例的机制来启用定期异步更新。我最初的直觉是:不要这样做。如果在写入文件时更新属性会发生什么情况?如果更新间隔很短会发生什么?

如果您希望外部源影响应用程序的行为,请为该要求设计一个强大的解决方案。不要仅仅因为属性文件控制着您的应用程序,就认为您必须覆盖属性文件。

关于JAVA多次读取属性文件进行属性更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38148245/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com