0

在将 Configuration 对象公开为 Spring @Bean 时,我一直在使用 Commons Configuration v1 的重新加载功能而没有任何额外的编码,因为每次访问 Configuration 时都会执行重新加载检查。

我现在正在尝试迁移到 Commons Configuration v2,并且我读到重新加载仅对构建器创建的新配置对象有效。

换句话说,在 v1 中我可以做类似的事情

@Bean
public Configuration config() {
    ...
    return builder.getConfiguration();
}

然后注入配置

@Autowired Configuration config;

并期望它重新加载(在需要时)

config.getString("somepath");

现在我应该打电话

builder.getConfiguration()

每次我想要一个新的配置时再次。

那么我该怎么做呢?Spring中的任何东西都可以帮助我“刷新”一个已经注入许多@Controllers的@Bean吗?它不必是自动的:我可以在管理控制台中实现一个“重新加载”按钮来触发它。

4

1 回答 1

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

}
于 2016-06-01T20:50:05.237 回答