springboot项目自定义读取多环境yml配置方法
发表于:2025-12-04 作者:千家信息网编辑
千家信息网最后更新 2025年12月04日,这篇文章主要讲解了"springboot项目自定义读取多环境yml配置方法",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"springboot项目自定义
千家信息网最后更新 2025年12月04日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安全错误
数据库的锁怎样保障安全
csgo香港服务器ip
web服务器存在的安全威胁
湖北省潜江市dns服务器
通信和网络技术隐私问题
娄底软件开发培训选哪家
2015三级网络技术
禄劝智能化软件开发报价表
网络技术员住进养老院
青岛物流软件开发平台
初识人民银行网络安全
韩国网络技术课题
南通信息网络安全协会
中国做网络安全最好的企业
登封5g网络安全
数据库java存储过程
页面服务器崩溃进不去怎么办
软件开发合同质保金
asp数据库编程入门
家庭网络安全最好的路由器
比亚迪软件开发岗
戴尔1900服务器
nis服务器安全
云南计算机网络技术专业大专学校
数据库超市管理系统概述
2015三级网络技术
苏州杰辰软件开发有限公司
mysql -d 数据库
现金贷系统软件开发
服务器管理员账户密码忘记
买服务器实名认证是备案吗