当前位置: 首页 > news >正文

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C#用SDK打开海康工业相机,callback取图Bitmap格式,并保存
  • React启动时 Error: error:0308010C:digital envelope routines::unsupported
  • 三维手势 handpose 3D RGB 手势3D建模 三维建模-手势舞 >> DataBall
  • C语言 | Leetcode C语言题解之第434题字符串中的单词数
  • 【我的 PWN 学习手札】fastbin reverse into tcache —— tcache key 绕过
  • 科大讯飞智能体Python SDK接入流程
  • 我能禁止使用某协议的ip禁止访问我的资源吗
  • provide 和 inject
  • 容器化安装Jenkins部署devops
  • 基于SpringBoot的在线点餐系统【附源码】
  • 【Unity设计模式】Unity MVC/MVP架构介绍,及MVC/MVP框架的简单应用
  • json格式互相转换
  • [论文笔记] 多语言配比的自动化超参搜索
  • 第三讲 part 2:LINK3D原理 - 代码 - 自定义内容
  • 【VUE】vue-router
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • 2019年如何成为全栈工程师?
  • 230. Kth Smallest Element in a BST
  • exif信息对照
  • iOS小技巧之UIImagePickerController实现头像选择
  • Java多态
  • passportjs 源码分析
  • Shadow DOM 内部构造及如何构建独立组件
  • Swoft 源码剖析 - 代码自动更新机制
  • webpack入门学习手记(二)
  • 前端面试总结(at, md)
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 使用common-codec进行md5加密
  • 微服务框架lagom
  • 自动记录MySQL慢查询快照脚本
  • MPAndroidChart 教程:Y轴 YAxis
  • Semaphore
  • 如何在招聘中考核.NET架构师
  • ​字​节​一​面​
  • #laravel 通过手动安装依赖PHPExcel#
  • #QT项目实战(天气预报)
  • #数据结构 笔记三
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (1) caustics\
  • (补)B+树一些思想
  • (补充):java各种进制、原码、反码、补码和文本、图像、音频在计算机中的存储方式
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (每日一问)基础知识:堆与栈的区别
  • (转)shell中括号的特殊用法 linux if多条件判断
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .NET 中 GetProcess 相关方法的性能
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .NET8使用VS2022打包Docker镜像