有时候我们不知道配置项的key是什么,或者我们不在意怎么去配置,最后都希望能够把值取出来;spring的上下文中可以获取Environment,然后getProperty来取得值,但是我们必须指定key;但是一想里面肯定也用一个map结构来存的,所以肯定可以全量拿出来;下面是我的一个例子,我想根据执行前缀,拿出配置项是这个前缀的所有配置项;
Environment env = applicationContext.getEnvironment();
AbstractEnvironment aEnv = (AbstractEnvironment) env;
MutablePropertySources propertySources = aEnv.getPropertySources();
propertySources.forEach(propertySource -> {
if (propertySource instanceof MapPropertySource) {
MapPropertySource mps = (MapPropertySource) propertySource;
Set<String> keys = mps.getSource().keySet();
for (String key : keys) {
if (key.startsWith(cfgPrefix)) {
topicSet.add(String.valueOf(mps.getProperty(key)));
}
}
}
});
如果有其他的需求的,可以根据这个例子做变化即可
网友评论