@PropertySource适配通配符加载到Environment的一种方案

@PropertySource可将配置文件加载到内存,时间有限说干的,@PropertySource注解有4个参数,其中value表示要加载文件的路径,这个参数不支持通配符。还有一个参数PropertySourceFactory是加载配置文件的工厂,这两个参数配合使用可以实现标题的功能,代码如下:

待加载的配置文件如下:

配置类如下:

@Configuration
@PropertySource(value = {"classpath:executePath/**_${mydemo.ymlparam:clickhouse}.properties"},encoding = "utf-8",factory = EngineSqlConfigSource.class,ignoreResourceNotFound = true
)
@Slf4j
public class EngineSqlConfig {@Autowiredprivate Environment environment;//获取配置文件中参数public String getProperty(String key, String defaultValue) {return this.environment.getProperty(key, defaultValue);}public String getPropertyNotEmpty(String key) {String value = this.environment.getProperty(key);if (StringUtil.isEmpty(value)) {log.error("配置项未配置,{}",key);return value;} else {return value;}}
}

工厂类如下 

@Slf4j
public class EngineSqlConfigSource implements PropertySourceFactory {@Overridepublic PropertySource<?> createPropertySource(String name, EncodedResource resource) throws IOException {Properties props = new Properties();//按路径加载配置文件ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();Resource[] resources = resolver.getResources(((ClassPathResource) resource.getResource()).getPath());if (ArrayUtil.isEmpty(resources)) {return new PropertiesPropertySource("mainInfo", props);}for (int i = 0; i < resources.length; i++) {PropertiesLoaderUtils.fillProperties(props, resources[i]);}PropertiesPropertySource propertiesPropertySource = new PropertiesPropertySource("mainInfo", props);return propertiesPropertySource;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/160882.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【GUI】-- 13 贪吃蛇小游戏之食物及成绩判断

GUI编程 04 贪吃蛇小游戏 4.4 第四步&#xff1a;食物及成绩判断 首先&#xff0c;添加食物与分数的数据定义&#xff1a; //食物的坐标int foodX;int foodY;Random random new Random();//积分面板数据结构int score;在初始化方法中&#xff0c;添加(画出)食物与分数&…

CSDN最新最全pytest系列——pytest-base-url插件之配置可选的项目系统UR

前言 ①当我们的自动化代码完成之后&#xff0c;通常期望可以在不同的环境进行测试&#xff0c;此时可以将项目系统的URL单独拿出来&#xff0c;并且可以通过pytest.ini配置文件和支持pytest命令行方式执行。 ② pytest-base-url 是一个简单的pytest插件&#xff0c;它通过命…

纽扣电池上架TEMU、亚马逊美国站需要做什么认证?纽扣电池认证标准16CFR1700.15,16CFR1700.20

近日&#xff0c;Temu连发多条卖家弹窗内容均为商品质量事故违规处理通告。其中一条为卖家销售的车载吸尘器发生烧毁、冒烟等情况&#xff0c;产生用户人伤、财损等舆情。经查实是商家偷换关键部件锂电池&#xff0c;导致商品质量下降造成事故。TEMU对于问题车载吸尘器处理结果…

opencv 存储bgr格式/同理可类推yuv

需求背景 开发rk3588 音视频硬件编解码&#xff0c;然后看见他的输入文件格式。。 只能是裸的文件。不能是压缩过的。就是不能是jpg/png这种格式&#xff0c;只能是以下的图像/视频 的存储格式.那么我没有这个格式的&#xff0c;以前hi3559的bgr格式和他要的也不太一致&#x…

设计循环队列,解决假溢出问题

什么是假溢出&#xff1f; 当我们使用队列这种基本的数据结构时&#xff0c;很容易发现&#xff0c;随着入队和出队操作的不断进行&#xff0c;队列的数据区域不断地偏向队尾方向移动。当我们的队尾指针指向了队列之外的区域时&#xff0c;我们就不能再进行入队操作了&#xff…

单链表在线OJ题二(详解+图解)

1.在一个排序的链表中&#xff0c;存在重复的结点&#xff0c;请删除该链表中重复的结点&#xff0c;重复的结点不保留&#xff0c;返回链表头指针 本题的意思是要删除链表中重复出现的节点&#xff0c;然后返回删除重复节点后的链表。 我们可以直接用一个哨兵位以便于观察链表…

【GIT】代码仓库服务器变更本地修改并推送

author: jwensh date: 20231122 问题背景 没有使用域名的 gitlb 服务器搬移&#xff08;IP地址变了&#xff09;&#xff0c; 以至于 gitlab 管理的项目无法进行连接及推送。因为涉及到多个项目工程&#xff0c;所以可以用本地配置修改的方式来进行重新关联&#xff08;这种修…

指针变量和地址

A.指针变量和地址 理解了内存和地址的关系&#xff0c;我们再回到C语⾔&#xff0c;在C语⾔中创建变量其实就是向内存申请空间&#xff0c;比如&#xff1a; #include <stdio.h> int main() {int a 10;return 0; } ⽐如&#xff0c;上述的代码就是创建了整型变量a&…

spring-boot-admin-starter-server监控springboot项目

文章目录 场景实现具体操作展示 场景 监控三件套Prometheus、Grafana、Alertmanager 部署起来太复杂,如果公司没有运维而且项目很小就可以使用spring-boot-admin-starter-server替代。这个包使用起来还是很简单的, 下面就实现一个对springCloud项目的监控 实现 参考 项目 具体操…

算法通关村第十二关|青铜|字符串转换整数

1.转换成小写字母 原题&#xff1a;力扣709. 字符串大写转小写有现成的API使用&#xff0c;但是我们也可以自己来实现。 使用或运算进行加操作能提高效率&#xff0c;因为 32 对应的二进制表示为 00100000 &#xff0c;而大写字母的范围 [65, 90] 的二进制表示在 00100000 的…

经典中的经典之字符串

前言&#xff1a;前段时间发烧了&#xff0c;所以耽误了很多事情&#xff0c;一直没有更新&#xff0c;多穿点衣服&#xff0c;感冒不好受。 接下来有时间就会陆续更新一些基础的算法题&#xff0c;题目都很经典&#xff0c;大家可以先尝试着做&#xff0c;再看 解析。 第一…

Windows常用cmd网络命令详解

中午好&#xff0c;我的网工朋友。 上回给你们梳理了一些有趣的cmd命令&#xff0c;很多朋友希望再拓展一下&#xff0c;这不就来了&#xff1f; 今天从windows切入&#xff0c;给你分享一些常用cmd网络命令&#xff0c;如果能熟悉上手&#xff0c;很多功能都可以快速实现&am…

Java Class 类文件格式看这一篇就够了

本文将揭开Java Class文件的神秘面纱&#xff0c;带你了解Class文件的内部结构&#xff0c;并从Class文件结构的视角告诉你&#xff1a; 为什么Java Class字节码文件可以“写一次&#xff0c;遍地跑”&#xff1f;为什么常量池的计数从1开始&#xff0c;而不是和java等绝大多数…

封装Redis工具类

基于StringRedisTemplate封装一个缓存工具类&#xff0c;满足下列需求&#xff1a; 方法1&#xff1a;将任意Java对象序列化为json并存储在string类型的key中&#xff0c;并且可以设置TTL过期时间 方法2&#xff1a;将任意Java对象序列化为json并存储在string类型的key中&…

【JVM精讲与GC调优教程(概述)】

如何理解虚拟机(JVM)跨语言的平台 java虚拟机根本不关心运行在其内部的程序到底是使用何种编程语言编写的,他只关心“字节码”文件。 java不是最强大的语言,但是JVN是最强大的虚拟机。 不存在内存溢出? 内存泄露? JAVA = (C++)–; 垃圾回收机制为我们打理了很多繁琐的…

力扣刷题第二十八天--二叉树

前言 今天的五道题都是层序遍历的模板&#xff0c;深度优先的递归还不太熟。继续努力。 内容 一、在每个树行中找最大值 515.在每个树行中找最大值 给定一棵二叉树的根节点 root &#xff0c;请找出该二叉树中每一层的最大值。 广度优先搜素 时间复杂度&#xff1a;O(n)…

算法基础:KMP算法详细详解

目录 1、几个最基本的概念 2、暴力算法 3、KMP算法 4、KMP代码实现 5、时间复杂度 1、几个最基本的概念 字符串的前缀&#xff1a; 主串&#xff08;目标串&#xff09;从索引0开始的子串被称为主串的前缀。 字符串的后缀&#xff1a; 主串从索引大于0的位置到结尾的子串…

【人工智能入门学习资料福利】

总目录如下&#xff08;部分截取&#xff09;&#xff1a; 百度网盘链接&#xff1a;https://pan.baidu.com/s/1bfDVG-xcPR3f3nfBJXxqQQ?pwdifu6 提取码&#xff1a; ifu6

Sentinel在Spring Cloud中的流量控制与熔断降级:保障你的微服务稳定运行

在当今高度互联的世界中&#xff0c;微服务架构已成为构建稳健系统的基石。然而&#xff0c;随着系统复杂性的增加&#xff0c;高并发和异常情况下&#xff0c;保障服务稳定性变得尤为关键。本文将带你探索Spring Cloud中Sentinel框架的强大功能&#xff0c;它能够为你的微服务…

协程及运用

协程 使用方法一方法二网页下载中使用有返回值 实战图片实战 一个线程多个任务&#xff0c;线程由操作系统开启&#xff0c;比较耗资源。线程内合理分配任务&#xff0c;充分利用线程内的资源&#xff0c;一个任务io阻塞时&#xff0c;cpu处理其他非阻塞任务。 使用 方法一 i…