Archaius的财产变更监听者

时间:2014-09-16 22:10:52

标签: java apache-commons-config netflix-archaius

我使用Archaius在托管我的应用的所有服务器之间保持系统属性一致。我可以看到所有属性getter都可以在属性发生变化时调用回调(例如参见third argument in getStringProperty()),但我想听任何属性更改。是否有一些我可以实现的接口并在某处注册为监听器?

1 个答案:

答案 0 :(得分:5)

我没有在任何Archaius操作方法文档中找到答案,但Apache Commons Configuration确实在他们的Configuration Events文档中提供了一个解决方案(Archaius完全兼容)。

我通过实现org.apache.commons.configuration.event.ConfigurationListener创建了一个监听器,它定义了一个名为configurationChanged()的方法并且只接受一个ConfigurationEvent参数。在属性实际更改之前和之后调用此方法一次,beforeUpdate参数上的event布尔值表示每次调用的时间。

创建监听器后,我将其注册到我的Archaius配置管理器:

ConfigurationManager.getConfigInstance().addConfigurationListener(new MyCustomConfigurationListener());

现在我可以看到MyCustomConfigurationListener.configurationChanged()在每次更改属性时被调用两次(一次之前和一次之后)。