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