springboot项目自定义读取多环境yml配置方法
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要讲解了"springboot项目自定义读取多环境yml配置方法",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"springboot项目自定义
千家信息网最后更新 2026年11月02日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安全错误
数据库的锁怎样保障安全
互联网品科技
中资互联网科技
互联网科技与金融科技
金融科技 互联网金融
亿策互联网科技
极限挑战互联网科技
致聘互联网科技
四川狮子座互联网科技
深圳卡尔迅互联网科技有限公司怎么样
互联网科技博主是什么意思
广州慧亚互联网科技怎么样
广州恒生互联网科技有限
电子科技大学互联网创业大赛
晋城互联网科技
爱医互联网络科技
卓翼科技产业互联网合作
伍佰万互联网科技怎么赚钱
杭州披云加互联网科技有限公司
互联网科技股为什么大涨
恒生科技指数 中概互联网
涨乐互联网科技
互联网科技公司官网
深圳天众互联网科技公司
万达互联网科技
互联网 新科技
互联网科技英文翻译
互联网企业和科技型企业
互联网科技公司有风险吗
保险科技服务互联网营销体系
广州燕处互联网科技有限公司