springboot项目自定义读取多环境yml配置方法
发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,这篇文章主要讲解了"springboot项目自定义读取多环境yml配置方法",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"springboot项目自定义
千家信息网最后更新 2024年11月30日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安全错误
数据库的锁怎样保障安全
网络安全工作室简介
学软件开发的最佳年龄
系统无法独占数据库
黑客大牛数据库
稳定的数据库软件
西安巡检管理软件开发
党务政务平台网络安全
软件开发哪家大学比较专一
建立医院管理和安全运行的数据库
中国公路桥梁基础数据库
cf服务器是红色的
500内部服务器错误是什么原因
服务器与交换机的关系
数据库中查询评分
网络技术工作室认识
国家网络安全中心 武汉
nas挂应用还是数据库
2003搭建web服务器
网络安全红
重视网络安全的重要性和意义
网络安全手抄报a4纸复杂
计算机网络技术龙头企业
公民员为什么要注重网络安全
黄石软件开发
博古架设计软件开发
如何将access数据库
注册表里面的数据库
饥荒中如何连接到游戏服务器
黑暗之魂3正版不连接服务器
校园网络安全策略与实现