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

目录

加载默认配置文件

批量加载配置文件

文件拆分

重写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

相关内容

热门资讯

求这类型的言情小说··· 求这类型的言情小说···像《温暖的弦》,《第三种爱情》,《残音》等这类型的小说,结局不论HE与否。匪...
重生之钢铁大亨好听吗,哪里可以... 重生之钢铁大亨好听吗,哪里可以听?重生之钢铁大亨的话,还说好听的
权相宇演的《毒爱》的主题曲是什... 权相宇演的《毒爱》的主题曲是什么呀?还有他的作品有什么呀,有没有歌曲,谢谢了呀?心痛-Tei
葫芦兄弟中二娃的本领是什么 葫芦兄弟中二娃的本领是什么眼观六路 耳听八方千里眼 顺风耳 机灵敏捷 任何诡计在他的面前都没用...
人生五味是哪些 人生五味是哪些能体验出人生的油盐酱醋茶.....美食 啊酸、甜、苦、辩、平
为什么没有术士 呢? 为什么没有术士 呢?uu hh h只要按照熟练技师的指示去做就行了。不是道士吗?现在还是有啊
统计员是什么?统计师证怎么考?... 统计员是什么?统计师证怎么考?需要什么条件吗?类似 文员 网上报考 自学 也可以报班学统计分初,中,...
谁推荐下外国校园青春(励志)电... 谁推荐下外国校园青春(励志)电影~~恩...如题 就是像《摇滚校园》《歌舞青春》之类的~电影 ...
你身边有哪些好听不烂大街的名字... 你身边有哪些好听不烂大街的名字?庆安街,倒过来就是我家乡安庆的名字,很喜欢,有种回到家乡的感觉,在陌...
包文婧晒另类全家福,包贝尔远程... 包文婧晒另类全家福,包贝尔远程参加女儿生日,你喜欢他们的女儿吗?我喜欢,他们的女儿如今长得非常好看,...
跑外卖电动车寿命一般多久? 跑外卖电动车寿命一般多久?跑外卖的电动车寿命一般是一年左右要换电瓶了,车辆还是可以再跑两年,
《男团秘事》讲述的是什么啊 《男团秘事》讲述的是什么啊 我觉得这部电影讲述的简单易懂但是给了我好多关于人生的感叹
江西用英语怎么说 江西用英语怎么说一般情况地名直谨手接汉语拼音 Jiang xi如果是具体地方可以祥汪嫌加上陵逗pro...
女性怀孕的时候需要补充哪些营养... 女性怀孕的时候需要补充哪些营养?要补充维生素,补充钙,铁,锌,补充蛋白质,叶酸,DHA。
大家觉得 名侦探柯南里的 基德... 大家觉得 名侦探柯南里的 基德 和新一 谁帅气? 要有绝对理由的哦!~ 谢谢~!我觉得基德帅,因为每...
什么样的男人才是真正有品味的男... 什么样的男人才是真正有品味的男人学会文明,一个有品位的男人,应该是除职业以外,会欣赏艺术、音乐、哲学...
描写吉他的句子 描写吉他的句子1、有一本书,在等待被翻阅;有一把吉他,在等待被弹拔;有一丛花,在等待被欣赏;有一杯茶...
捧红了外甥女,却对儿子只字不提... 捧红了外甥女,却对儿子只字不提,蒋雯丽为何这样做?因为她的儿子并不想混娱乐圈,所以蒋雯丽这样做也是为...
亲子互动体验暑期潮玩盛宴 青少... 泼水狂欢、儿童公益比赛、璀璨焰火秀……暑期来临,本市琳琅满目的消夏打卡项目吸引了大批市民游客,在亲子...
原创 “... 近日,由广东省文化和旅游厅主办的“喜洋洋乐融融游广东之湛江站”暨“跟着海岛去旅行”2025年广东文旅...