在开发中往往需要获取到一些配置启动一些东西,那么这个时候我们想要获取的配置的多少是不固定的,例如实时计算平台中,flink可配置的参数是很多的,那么我们全部记录下来写入代码中这样是不科学的,那么我们就可以通过ENV的方式获取到所有的配置,然后过滤出来flink的配置,来进行启动flink程序就行了,让我们来一起看看代码吧
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.AbstractEnvironment;
import org.springframework.core.env.EnumerablePropertySource;
import org.springframework.core.env.Environment;
import org.springframework.core.env.PropertySource;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
/**
* @author :qingzhi.wu
* @date :2021/5/18 4:20 下午
*/
@Component
public class FlinkConfig {
@Autowired
private Environment env;
public Map<String, String> getConfigs() {
HashMap<String, String> configs = new HashMap<>();
for (PropertySource<?> propertySource : ((AbstractEnvironment) env).getPropertySources()) {
if (propertySource instanceof EnumerablePropertySource) {
for (String name : ((EnumerablePropertySource) propertySource).getPropertyNames()) {
if (name != null && name.startsWith("flink")) {
configs.put(name.replaceAll("flink.", ""), env.getProperty(name));
}
}
}
}
return configs;
}
}