springboot项目自定义读取多环境yml配置方法
发表于:2025-02-06 作者:千家信息网编辑
千家信息网最后更新 2025年02月06日,这篇文章主要讲解了"springboot项目自定义读取多环境yml配置方法",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"springboot项目自定义
千家信息网最后更新 2025年02月06日springboot项目自定义读取多环境yml配置方法
这篇文章主要讲解了"springboot项目自定义读取多环境yml配置方法",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"springboot项目自定义读取多环境yml配置方法"吧!
有一些支付相关的配置文件是在不想写到application里的。
不说原理了,网上一大堆。
1:直接上代码:
import lombok.extern.slf4j.Slf4j;import org.springframework.boot.SpringApplication;import org.springframework.boot.env.EnvironmentPostProcessor;import org.springframework.boot.env.PropertySourceLoader;import org.springframework.boot.env.YamlPropertySourceLoader;import org.springframework.core.env.ConfigurableEnvironment;import org.springframework.core.env.PropertySource;import org.springframework.core.io.Resource;import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import org.springframework.core.io.support.ResourcePatternResolver;import org.springframework.util.CollectionUtils;import org.springframework.util.ResourceUtils;import java.io.IOException;import java.util.List;/** * @version V1.0 * @description: 读取自定义的payment-*.yml的环境处理器(只读yml文件,其他文件忽略) * @author: SunF * @create: 2019-08-21 09:59 **/@Slf4jpublic class PaymentEnvironmentPostProcessor implements EnvironmentPostProcessor { private final ResourcePatternResolver patternResolver = new PathMatchingResourcePatternResolver(); private final PropertySourceLoader propertySourceLoader; public PaymentEnvironmentPostProcessor() { super(); propertySourceLoader = new YamlPropertySourceLoader(); } @Override public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) { String[] activeProfiles = environment.getActiveProfiles(); for (String activeProfile: activeProfiles){ String location = ResourceUtils.CLASSPATH_URL_PREFIX + "paymentConfig/payment-"+activeProfile+ ".yml"; try{ Resource[] resourceArray = this.patternResolver.getResources(location); for(Resource resource : resourceArray){ List> propertySourceList = propertySourceLoader.load(resource.getFilename(), resource); if(! CollectionUtils.isEmpty(propertySourceList)){ propertySourceList.stream().forEach(environment.getPropertySources() :: addLast); } } }catch(IOException e){ log.error("加载支付配置文件失败,因为{}", e.getMessage(), e); } } }}
这里只读了yml文件,我们不需要其他文件,如果采用多种PropertySourceLoader进行扫描加载无疑增加了不必要的启动时间。
如果有需要可以将propertySourceLoader改为List,后续的环节在for循环中处理:
private final ListpropertySourceLoaderList; public PaymentEnvironmentPostProcessor() { super(); this.propertySourceLoaderList = SpringFactoriesLoader.loadFactories(PropertySourceLoader.class, getClass().getClassLoader()); }
2:添加spring.factories
在resources下添加META-INF文件夹,在旗下创建spring.factories文件,内容为:
org.springframework.boot.env.EnvironmentPostProcessor=com.xxx.xxx.config.PaymentEnvironmentPostProcessor
感谢各位的阅读,以上就是"springboot项目自定义读取多环境yml配置方法"的内容了,经过本文的学习后,相信大家对springboot项目自定义读取多环境yml配置方法这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
文件
配置
环境
方法
项目
内容
学习
处理
支付
代码
原理
处理器
多种
大堆
就是
思路
情况
文件夹
文章
旗下
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
花神南京互联网科技有限公司
系统与网络安全重点
数据库修改前50条数据
sql 数据库查看用户数据
唐山市网络安全宣传周
门窗企业网络安全
网络安全 输不起的互联网
实时和历史数据库
泗阳大型网络技术价目表
虎丘区大数据软件开发口碑推荐
阿里云服务器 微信公众号
服务器安全设置是否关闭
数据元素在数据库中的术语
网络安全信号源无信号
深圳亿链网络技术有限公司
青海hp服务器虚拟化价格
王者荣耀使用什么软件开发的
网络安全实务知识
湘潭大学网络安全空间
江苏软件开发设施品质保障
人工服务器
铠途互联网科技ceo
网络安全问题 上报方案
能不能自己黑游戏服务器充值
基岩版服务器添加小游戏
led链接数据库
数据库服务器名称1433端口
航拍临沂龙湖软件开发园区
数据库meta
迷你主机做家用服务器