spring boot导入多个配置文件

1、简介

        Spring Boot从2.4.x版本开始支持了导入文件的方式来加载配置参数,与spring.config.additional-location不同的是不用提前设置而且支持导入的文件类型相对来说要丰富很多。

        我们只需要在application.properties/application.yml配置文件中通过spring.config.import属性配置需要导入的文件列表即可。

        通过spring.config.import属性支持导入多种途径的配置文件,下面简单介绍几种。

2、导入方式

classpath

        使用classpath:前缀来指定位于类路径(classpath)中的配置文件。这通常用于引用项目内部的资源,如src/main/resources目录下的文件。

spring:config:import: classpath:custom-config.yml

file

        使用file:前缀来指定文件系统中的配置文件。这允许你引用位于项目外部的配置文件。

spring:config:import: file:/path/to/external-config.yml

optional

        使用optional:前缀可以指定一个配置文件,如果该文件不存在,不会抛出错误,应用程序会继续启动。这在引用可选配置时非常有用。

spring:config:import: optional:classpath:optional-config.yml

nacos

        如果你使用Nacos作为配置中心,可以使用nacos:前缀来导入Nacos中的配置文件。

spring:cloud:nacos:config:import: nacos:data-id:group-id

通配符导入

        你可以使用通配符(如*)来导入一个目录下的所有配置文件。这在有多个配置文件需要被一起加载时非常有用。

spring:config:import: classpath:config-templates/*.yml

无扩展名文件

        如果你需要导入没有扩展名的文件,可以在文件名后添加方括号,例如classpath:additional-application[.yml]

spring:config:import: classpath:additional-application[.yml]

目录导入

        你可以导入整个目录下的配置文件,Spring Boot会自动加载目录下的所有.properties.yml文件。

spring:config:import: classpath:config-import-dir/

特定环境配置文件

        虽然不是spring.config.import的直接选项,但你可以创建特定于环境的配置文件(如application-dev.yml),并通过激活相应的profile来加载它们。

java -jar myapp.jar --spring.profiles.active=dev

命令行参数

        虽然不是在application.ymlapplication.properties中设置,但你可以在启动应用程序时通过命令行参数来导入配置文件。

java -jar myapp.jar --spring.config.import=classpath:another-config.yml

        这些选项提供了灵活的方式来组织和管理你的配置文件,使得你可以根据不同的环境和需求来调整应用程序的配置。

3、示例代码

application.yml

server:port: 8080
spring:application:name: spring-config-multiple-democonfig:import:- classpath:application-test.yml- classpath:application-learn.yml- classpath:application-user-list.yml

application-learn.yml

learn:cond:enabled: false

application-test.yml

test:app:id: 123name: "张三"

application-user-list.yml

com:user:user-list:- name: "张三"id: 1- name: "李四"id: 2person-list:- name: "王五"id: 3- name: "赵六"id: 4

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

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

相关文章

通过document获取节点元素

1.层级节点 <ul><li id"li1">1</li><li>2</li><li id"li3">3</li><li>4</li><li>5</li></ul><script>//获取id名为li1的元素赋值给li1let li1document.getElementById(li…

Java语言程序设计基础篇_编程练习题**18.34 (游戏:八皇后问题)

目录 题目&#xff1a;**18.34 (游戏:八皇后问题) 代码示例 代码解析 输出结果 使用文件 题目&#xff1a;**18.34 (游戏:八皇后问题) 八皇后问题是要找到一个解决方案&#xff0c;将一个皇后棋子放到棋盘上的每行中&#xff0c;并且两个皇后棋子之间不能相互攻击。编写个…

Oracle Truncate和delete的区别

DropTruncatedelete语句类型 DDl &#xff08;数据定义语言 Data Definition Language DDl &#xff08;数据定义语言 Data Definition Language DML&#xff08;数据操作语言 Data Manipulation Language 速度 快 删除整个表 快 一次性删除 慢 逐行删除 回滚不可不可可del…

基于C#+SQL Server2005(WinForm)图书管理系统

图书管理系统 一、 首先把数据库脚本贴出来(数据库名为library) USE [library] GO /****** Object: Table [dbo].[books] Script Date: 06/12/2016 11:27:12 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[books]([bNum] [nvarchar](10…

【python】利用python处理数据(stata等价命令)

1.一般运算 加法 # gen x y z df[x] df[y] df[z]减法 # gen x y - 1 df[x] df[y] - 1乘法 # gen var x * y df[var] df[x] * df[y]除法 # gen x z / y df[x] df[z] / df[y]取对数 # gen logx log(x) df[logx] np.log(df[x])开根号 # gen z sqrt(y) df[z] …

宝塔部署vue项目出现的各种问题

使用宝塔面板&#xff0c;网站页面&#xff0c;构建php静态网页 问题一&#xff1a;图片等静态资源无法加载 找到真正请求的url&#xff0c; 然后在项目目录下面创建对应的目录&#xff0c;将资源放入 问题二&#xff1a;刷新出现404 在这里任意位置添加 ## 添加上这个配…

socket.io-client实现实前后端时通信功能

这里我使用的后端 基于node.js的koa框架 前端使用的是vite {"name": "hou","version": "1.0.0","description": "","main": "app.js","scripts": {"test": "echo …

MongoDB-aggregate流式计算:去重操作

场景一&#xff1a;去重查询 在MongoDB的find查询里&#xff0c;可以直接使用distinct方法&#xff0c;但也有不少限制 在aggregate流式计算中&#xff0c;没有办法直接使用distinct方法&#xff0c;需要使用其他方法实现&#xff1a; 1、使用$group管道操作符&#xff0c;将需…

C语言中的typedef简介

type简介 在C语言中&#xff0c;typedef 是用于为现有的数据类型定义一个新的类型名称的关键字。它的作用是为类型取一个别名&#xff0c;使代码更简洁、更易于理解。 基本语法 typedef 原始类型 新类型名; 示例 为 int 类型定义一个别名&#xff1a; typedef int INTEGER…

网络安全:构建数字世界的坚固防线

网络安全&#xff1a;构建数字世界的坚固防线 在21世纪的今天&#xff0c;随着信息技术的飞速发展&#xff0c;互联网已经渗透到我们生活的方方面面&#xff0c;成为现代社会不可或缺的基础设施。从个人日常交流、在线购物、金融服务&#xff0c;到企业的运营管理、数据存储与…

浅谈虚拟内存(操作系统、Redis)

浅谈虚拟内存&#xff08;操作系统、Redis&#xff09; 参考&鸣谢 4.1 为什么要有虚拟内存&#xff1f; xiaolincoding 【简单说下】REDIS的虚拟内存机制,会吗?别翻书 aristo_boyunv Redis 虚拟内存 Java杨永杰 浅谈虚拟内存&#xff1a;操作系统与 Redis 在计算机系统中…

Vue3——Vite篇

Vite是一款由Vue.js的作者尤雨溪开发的前端构建工具&#xff0c;专为现代前端项目而设计。它以其快速的冷启动、按需编译和热更新能力而受到广泛关注。以下是对Vite的详细解析&#xff1a; 一、核心特性 快速启动&#xff1a; Vite利用浏览器原生支持的ES模块&#xff08;ESM…

ARM单片机的内存分布(重要)

ARM单片机的内存分布&#xff08;重要&#xff09; 一、S32K344的内存布局 MEMORY {int_pflash : ORIGIN 0x00400000, LENGTH 0x003D4000 /* 4096KB - 176KB (sBAF HSE)*/int_dflash : ORIGIN 0x10000000, LENGTH 0x00020000 /* 128KB …

BUUCTF [SCTF2019]电单车详解两种方法(python实现绝对原创)

使用audacity打开&#xff0c;发现是一段PT2242 信号 PT2242信号 有长有短&#xff0c;短的为0&#xff0c;长的为1化出来 这应该是截获电动车钥匙发射出的锁车信号 0 01110100101010100110 0010 0前四位为同步码0 。。。中间这20位为01110100101010100110为地址码0010为功…

不靠学历,不拼年资,怎么才能月入2W?

之前统计局发布了《2023年城镇单位就业人员年平均工资情况》&#xff0c;2023年全国城镇非私营单位和私营单位就业人员年平均工资分别为120698元和68340元。也就是说在去年非私营单位就业人员平均月薪1W&#xff0c;而私营单位就业人员平均月薪只有5.7K左右。 图源&#xff1a;…

两数之和、三数之和、四数之和

目录 两数之和 题目链接 题目描述 思路分析 代码实现 三数之和 题目链接 题目描述 思路分析 代码实现 四数之和 题目链接 题目描述 思路分析 代码实现 两数之和 题目链接 LCR 179. 查找总价格为目标值的两个商品 - 力扣&#xff08;LeetCode&#xff09; 题目…

在Java中如何利用ClassLoader动态加密、解密Class文件

文章目录 一、准备示例代码二、加密Class文件三、自定义ClassLoader四、使用自定义ClassLoader加载类五、进阶&#xff1a;使用更高安全性的AES加密算法六、注意事项 在Java开发中&#xff0c;保护代码的安全性是一个重要的课题。为了防止代码被轻易反编译&#xff0c;我们可以…

EfficientFormer实战:使用EfficientFormerV2实现图像分类任务(一)

摘要 EfficientFormerV2是一种通过重新思考ViT设计选择和引入细粒度联合搜索策略而开发出的新型移动视觉骨干网络。它结合了卷积和变换器的优势&#xff0c;通过一系列高效的设计改进和搜索方法&#xff0c;实现了在移动设备上既轻又快且保持高性能的目标。这一成果为在资源受…

signalR和WebSocket的区别是什么

SignalR和WebSocket都是用于实现实时双向通信的技术&#xff0c;但它们在多个方面存在区别。以下是它们之间的主要区别&#xff1a; 1. 技术层次与协议支持 WebSocket&#xff1a; 是一种在单个TCP连接上进行全双工通信的协议。它是HTML5规范的一部分&#xff0c;提供了浏览器…

Redis-01 入门和十大数据类型

Redis支持两种持久化方式&#xff1a;RDB持久化和AOF持久化。 1.RDB持久化是将Redis的数据以快照的形式保存在磁盘上&#xff0c;可以手动触发或通过配置文件设置定时触发。RDB保存的是Redis在某个时间点上的数据快照&#xff0c;可以通过恢复RDB文件来恢复数据。 2.AOF持久化…