如何在Spring应用程序中获取所有属性的映射?
假设我们有一个如何在Spring应用程序中获取所有属性的映射?,spring,spring-profiles,Spring,Spring Profiles,假设我们有一个spring5+应用程序 如何获取应用程序-[env]文件中指定的所有属性的集合?找出每个属性的原始配置文件也很有趣 我想应该有一个标准的方法来实现这一点,但没有在web上找到任何提及。从Spring应用程序上下文中获取AbstractEnvironment,并遍历其EnumerablePropertySource源,发现所有属性名称就足够了,然后从环境中按名称获取属性值 AbstractEnvironment environment = getFromContext() /*i.
spring5+
应用程序
如何获取应用程序-[env]
文件中指定的所有属性的集合?找出每个属性的原始配置文件也很有趣
我想应该有一个标准的方法来实现这一点,但没有在web上找到任何提及。从Spring应用程序上下文中获取
AbstractEnvironment
,并遍历其EnumerablePropertySource
源,发现所有属性名称就足够了,然后从环境中按名称获取属性值
AbstractEnvironment environment = getFromContext() /*i.e. Autowired*/;
var propsStream =
environment
.getPropertySources().stream()
.flatMap(ps -> {
if (ps instanceof EnumerablePropertySource) {
return Arrays.stream(((EnumerablePropertySource<?>) ps).getPropertyNames());
} else {
return Stream.empty(); // or handle differently
}
})
.distinct()
.map(name -> Tuple.of(name, environment.getProperty(name)));
// here Tuple is a dummy class for holding (name, value)
AbstractEnvironment=getFromContext()/*即自动连线*;
无功功率流=
环境
.getPropertySources().stream()
.flatMap(ps->{
if(EnumerablePropertySource的ps实例){
返回Arrays.stream(((EnumerablePropertySource)ps.getPropertyNames());
}否则{
返回Stream.empty();//或以不同方式处理
}
})
.distinct()
.map(name->Tuple.of(name,environment.getProperty(name));
//这里Tuple是一个用于保存(名称、值)的虚拟类
您可以注入环境对象并对其使用getPropertySources()。请参阅AbstractEnvironment。您可以查看以下资源:,