列出最终的属性列表 - Spring Cloud Config Server

Pun*_*cky 11 spring-boot spring-cloud-netflix spring-cloud-config

当我访问应用程序的/ env端点时,Spring Cloud Config Server接受多个配置文件并返回所有配置文件的属性.响应列出了特定于每个配置文件的属性.如果2个不同的属性文件中存在相同的属性,则最后定义的属性优先.有没有办法获得应用程序将使用的属性键和值的最终列表?

Vya*_*ets 8

对于云配置客户端应用程序

我尝试过不同的方法并发现以下情况(意外):

GET /env/.* 返回配置属性的完整列表

对于云配置服务器应用程序

事实证明这已经实施,但没有很好地记录.所有你需要的是请求json,ymlproperties根据模式:

/{application}-{profile}.{ext}
/{label}/{application}-{profile}.{ext}
Run Code Online (Sandbox Code Playgroud)


Tod*_*nes 7

import java.util.properties;

import org.springframework.core.env.AbstractEnvironment;
import org.springframework.core.env.CompositePropertySource;
import org.springframework.core.env.Environment;

public class MyClass {
  @Autowired
  private Environment    env;

  Properties getProperties() {
    Properties props = new Properties();
    CompositePropertySource bootstrapProperties = (CompositePropertySource)  ((AbstractEnvironment) env).getPropertySources().get("bootstrapProperties");
    for (String propertyName : bootstrapProperties.getPropertyNames()) {
      props.put(propertyName, bootstrapProperties.getProperty(propertyName));
    }

    return props;
  }

}
Run Code Online (Sandbox Code Playgroud)

对不起......这是我第一次在这里回答问题.我创建了一个专门用来回答这个问题的帐户,因为我在研究同一个问题时遇到了这个问题.我找到了一个适合我的解决方案,并决定分享它.

这是我对所做的事情的解释:

  1. 我初始化一个新的"属性"对象(可能是一个HashMap或任何你想要的)

  2. 我查找属性源为"bootstrapProperties",它是一个CompositePropertySource对象.此属性源包含已加载的所有应用程序属性.

  3. 我遍历从CompositePropertySource对象上的"getPropertyNames"方法返回的所有属性名称,并创建一个新的属性条目.

  4. 我返回属性对象.