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