在将Configuration对象公开为Spring @Bean时,我一直在使用Commons Configuration v1的重新加载功能,而没有任何额外的编码,因为每次访问Configuration时都会执行重新加载检查。
我现在正在尝试迁移到Commons Configuration v2,并且我读到重新加载仅对构建器创建的新Configuration对象有效。
换句话说,在v1中我可以做类似
的事情@Bean
public Configuration config() {
...
return builder.getConfiguration();
}
然后使用
注入配置@Autowired Configuration config;
并期望它在
上重新加载(需要时)config.getString("somepath");
现在我应该致电
builder.getConfiguration()
每次我想要一个全新的配置时再次。
那我该怎么做呢? Spring中的任何内容都可以帮助我“刷新”已经注入许多@Controllers的@Bean吗? 它不必是自动的:我可以在管理控制台中实现“重新加载”按钮来触发它。
答案 0 :(得分:0)
也许我只需要将配置包装在MyConfiguration类中,作为@Bean公开,使用重建配置的方法,从控制台调用。类似的东西:
public class MyConfiguration {
private Configuration configuration;
... inject builder somehow here
public void reload() {
builder.getReloadingController().checkForReloading(null);
configuration = builder.getConfiguration();
}
public String getString(String key) {
return configuration.getString(key);
}
... all other delegated methods follow
}