4

我正在使用Archaius使托管我的应用程序的所有服务器之间的系统属性保持一致。我可以看到所有属性 getter 都可以在该属性更改时调用回调(例如,请参见 中的第三个参数getStringProperty()),但我想监听任何属性更改。是否有一些接口我可以在某处实现并注册为侦听器?

4

1 回答 1

7

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

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

一旦我创建了监听器,我就在我的 Archaius 配置管理器中注册了它:

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

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

于 2014-09-16T23:03:47.953 回答