自定义yml文件解析package com.jd.bpp.config;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.jd.bpp.domain.RequestConfig;
import org.apache.commons.collections4.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.yaml.snakeyaml.Yaml;
import java.io.IOException;
import java.util.*;
/**
-
@author : hanfeng
-
@description:
-
@date : 2022/4/12 17:00
*/
public class RequestConfigLoader {/**
- looger
*/
private static final Logger logger = LoggerFactory.getLogger(RequestConfigLoader.class);
/**
- 路径
/
private static final String PATH = "classpath:paramconfig/**/-configs.yml";
/**
- 配置图
*/
private static final Map<String, RequestConfig> CONFIG_MAP = new HashMap<>();
static {
init();
}/**
- 初始化
*/
public static void init() {
try {
PathMatchingResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
Resource[] resources = resourcePatternResolver.getResources(PATH);
for (Resource resource : resources) {
try {
Map<String, Object> load = new Yaml().load(resource.getInputStream());
RequestConfig requestConfig = JSON.parseObject(JSONObject.toJSONString(load), RequestConfig.class);
Optional.ofNullable(requestConfig.getIds()).filter(CollectionUtils::isNotEmpty).orElse(Collections.emptyList()).forEach(x -> CONFIG_MAP.put(x, requestConfig));
logger.debug(“requestConfig: {}”, JSON.toJSONString(requestConfig));
} catch (IOException e) {
logger.debug(“Load resource [{}] error:”, resource.getFilename());
}
}
} catch (IOException e) {
e.printStackTrace();
}
logger.info(“RequestConfig map: {}”, JSON.toJSONString(CONFIG_MAP));
}
/**
- 得到配置图
- @return {@link Map}<{@link String}, {@link RequestConfig}>
*/
public static Map<String, RequestConfig> getConfigMap() {
return CONFIG_MAP;
}
}
–使用:RequestConfig requestConfig = RequestConfigLoader.getConfigMap().get(unionParamId);;ck入参转换器:package com.jd.bpp.utils;
- looger
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.jd.bpp.config.Req