在Spring Cloud配置中添加新的键/值

时间:2018-10-31 07:30:30

标签: spring-cloud-config

我有一个用例,其中使用Spring Cloud config将某些属性文件作为服务公开,现在让我们说有人向属性文件添加新的键值,然后在刷新后如何在config-client中读取新的键值因为存在的bean没有可用的映射?

还如何映射新的属性文件?

1 个答案:

答案 0 :(得分:0)

最好有一个包装器类,该类可以处理所有属性并使用该包装器来获取参数的值。例如,

@Component
public class ApplicationProperties {

  private Properties properties = new Properties();

  private Environment environment;

  @Autowired
  public ApplicationProperties(Environment environment) {
    this.environment = environment;
  }

  public String getProperty(String name) {
    return getPropertyFromEnvContext(name);
  }

  public String getProperty(String name, String defaultValue) {
    String value = getProperty(name);
    return value == null ? defaultValue : value;
  }

  private String getPropertyFromEnvContext(String name) {
    if (environment == null) {
        return properties.getProperty(name);
    }
    return properties.getProperty(name, environment.getProperty(name));
  }
}

然后,将此属性类注入Bean中,并使用getProperty方法获取该属性的值。您必须编写密钥的逻辑。

例如,在我的用例中,

String propertyKey = format("topics.%s.%s.%s", someVariable, someOtherVariable, priority);
properties.getProperty(propertyKey);