重新加载Commons配置2 Spring bean

时间:2016-06-01 19:22:22

标签: spring apache-commons-config

在将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吗? 它不必是自动的:我可以在管理控制台中实现“重新加载”按钮来触发它。

1 个答案:

答案 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

}
相关问题