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