在我当前的项目中,我们需要实现一种方式,让短信发送者通过上传属性文件来管理检票口消息/国际化。
另请参阅此问题:管理国际化检票口应用程序
正如那里所建议的那样,我已经实现了一个自定义IStringResourceLoader
并将其添加到 StringResourceLoader 列表的开头以覆盖任何已经存在的属性:
getResourceSettings().getStringResourceLoaders().add(0, new CustomStringResourceLoader());
然而,这还不够,因为可能会发生更新并且需要在运行时加载。StringResources 由 wicket 缓存并仅在ResourceWatcher
触发时更新。
我找到了 Wicket 将字符串资源添加到观察者的位置:PropertiesFactory
在设置中。向观察者添加资源的方法是addToWatcher(...)
. 但是,此方法受到保护,并且整个设置表明这是用于开发目的而不是用于生产。
我设法通过扩展PropertiesFactory
并有效地创建自定义版本来添加到设置中来使用此方法:
getResourceSettings().setPropertiesFactory(new CustomPropertiesFactory(getResourceSettings()));
getResourceSettings().setResourcePollFrequency(Duration.seconds(1));
所以我的问题是:我觉得这是一个非常迂回的解决方案。是否有另一种方法来监视更改的属性文件?