Pun*_*cky 11 spring-boot spring-cloud-netflix spring-cloud-config
当我访问应用程序的/ env端点时,Spring Cloud Config Server接受多个配置文件并返回所有配置文件的属性.响应列出了特定于每个配置文件的属性.如果2个不同的属性文件中存在相同的属性,则最后定义的属性优先.有没有办法获得应用程序将使用的属性键和值的最终列表?
对于云配置客户端应用程序
我尝试过不同的方法并发现以下情况(意外):
GET /env/.* 返回配置属性的完整列表
对于云配置服务器应用程序
事实证明这已经实施,但没有很好地记录.所有你需要的是请求json,yml或properties根据模式:
/{application}-{profile}.{ext}
/{label}/{application}-{profile}.{ext}
Run Code Online (Sandbox Code Playgroud)
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)
对不起......这是我第一次在这里回答问题.我创建了一个专门用来回答这个问题的帐户,因为我在研究同一个问题时遇到了这个问题.我找到了一个适合我的解决方案,并决定分享它.
这是我对所做的事情的解释:
我初始化一个新的"属性"对象(可能是一个HashMap或任何你想要的)
我查找属性源为"bootstrapProperties",它是一个CompositePropertySource对象.此属性源包含已加载的所有应用程序属性.
我遍历从CompositePropertySource对象上的"getPropertyNames"方法返回的所有属性名称,并创建一个新的属性条目.
我返回属性对象.
| 归档时间: |
|
| 查看次数: |
5484 次 |
| 最近记录: |