【发布时间】:2014-11-10 19:41:00
【问题描述】:
我正在使用Archaius 来使托管我的应用程序的所有服务器之间的系统属性保持一致。我可以看到所有属性获取器都可以在该属性更改时调用回调(例如参见third argument in getStringProperty()),但我想监听 any 属性更改。是否有一些接口我可以实现并在某处注册为侦听器?
【问题讨论】:
标签: java apache-commons-config netflix-archaius
我正在使用Archaius 来使托管我的应用程序的所有服务器之间的系统属性保持一致。我可以看到所有属性获取器都可以在该属性更改时调用回调(例如参见third argument in getStringProperty()),但我想监听 any 属性更改。是否有一些接口我可以实现并在某处注册为侦听器?
【问题讨论】:
标签: java apache-commons-config netflix-archaius
我在任何 Archaius How-to 文档中都没有找到答案,但 Apache Commons Configuration 确实在他们的 Configuration Events 文档中提供了解决方案(与 Archaius 完全兼容)。
我通过实现org.apache.commons.configuration.event.ConfigurationListener 创建了一个侦听器,它定义了一个名为configurationChanged() 的方法并采用一个ConfigurationEvent 参数。此方法在属性实际更改之前和之后调用一次,event 参数上的 beforeUpdate 布尔值指示每次调用的时间。
创建侦听器后,我将其注册到我的 Archaius 配置管理器:
ConfigurationManager.getConfigInstance().addConfigurationListener(new MyCustomConfigurationListener());
现在我可以看到 MyCustomConfigurationListener.configurationChanged() 在每次属性更改时被调用两次(一次之前和之后)。
【讨论】: