spring 根据配置项的前缀获取值

有时候我们不知道配置项的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 keys = mps.getSource().keySet();
                for (String key : keys) {
                    if (key.startsWith(cfgPrefix)) {
                        topicSet.add(String.valueOf(mps.getProperty(key)));
                    }
                }
            }
        });

如果有其他的需求的,可以根据这个例子做变化即可

你可能感兴趣的:(spring 根据配置项的前缀获取值)