【Web系列十八】Springboot批量加载配置文件
admin
2024-04-23 02:52:31

目录

加载默认配置文件

批量加载配置文件

文件拆分

重写environment加载类

使能重写的类

参考资料


        spring项目开发过程中,配置参数会越来越多,如果都存放在同一个配置文件中,显然使用起来不方便,因此本文说的就是一种拆分的配置文件的方式。

加载默认配置文件

        这里是使用environment类自动加载配置文件中的参数。

        只要在类中初始化以下变量就行了

@Autowired
private Environment env;

        这样就可以自动加载resources下的application文件,后缀可以是yaml、yml、xml。

        使用起来也很简单,假设配置文件内容如下

Key1:Key2:Key3: 111

         获取参数方式如下:

env.getProperty(Key1.Key2.Key3);

批量加载配置文件

文件拆分

        拆分前文件层级

resources|____application.yaml

        拆分后文件层级

resources|____application.yaml|____client-application1.yaml|____client-application2.yaml|____client-application3.yaml

重写environment加载类

        新建文件src/main/java/global/env/ClientEnvironmentPostProcessor.java

@Slf4j
public class ClientEnvironmentPostProcessor implements EnvironmentPostProcessor {private final ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();private final List propertySourceLoaders;public ClientEnvironmentPostProcessor() {super();this.propertySourceLoaders = SpringFactoriesLoader.loadFactories(PropertySourceLoader.class, getClass().getClassLoader());}@Overridepublic void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {for (PropertySourceLoader loader: this.propertySourceLoaders) {for (String fileExtension: loader.getFileExtensions()) {String location = ResourceUtiles.CLASSPATH_URL_PREFIX + "/client-*." + fileExtension;try {Resource[] resources = this.resourcePatternResolver.getResources(location);for (Resource resource: resources) {List> propertySources = loader.load(resource.getFilename(), resource);if (null != propertySources && !=propertySources.isEmpty()) {propertySources.stream().forEach(environment.getPropertySources()::addLast);}}} catch (IOException e) {log.error("加载配置文件失败,因为{}", e.getMessage(), e);}}}}
}

使能重写的类

        resources下新建文件夹META-INF,在META-INF下新建spring.factories文件

org.springframework.boot.env.EnvironmentPostProcessor = \
global.env.ClientEnvironmentPostProcessor

参考资料

springboot批量加载自定义配置文件 - 简书 (jianshu.com)

Spring Boot Reference Guide

相关内容

热门资讯

山水间的酸爽密码:寻味广西菜的... 清晨五点,南宁水街的灯光早已在薄雾中晕开。一家开了三十年的粉店后厨,灶火正旺。老师傅将昨夜泡好的陈年...
菜鲜、果甜、肉香,大理风味凭什... 3月13日,“有一种美食叫云南 有一种味道叫大理”地方风物推介会在北京举行。现场,永平黄焖鸡、漾濞核...
巴塘县有哪些特色菜推荐 巴塘县,这片位于四川甘孜藏族自治州的土地,不仅有着壮丽的自然风光,更拥有独具特色的美食文化。当地的特...
辽宁辽阳18辆越野车,28名游... 18辆车28人穿越罗布泊无人区,因为没报备,属于非法穿越被拦下,罗布泊多危险,越是危险的地方越有人去...
【敢当锐评】想平安就得喝白酒?... 在泰山酒业迎来八十周年品牌升级之际,推出“想平安喝泰山”核心广告语。原本想借“平安”这一全民认同的情...