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-demo
  config:
    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: 123
    name: "张三"

application-user-list.yml

复制代码
com:
  user:
    user-list:
      - name: "张三"
        id: 1
      - name: "李四"
        id: 2
    person-list:
      - name: "王五"
        id: 3
      - name: "赵六"
        id: 4
相关推荐
长河24 分钟前
Java开发者LLM实战——LangChain4j最新版教学知识库实战
java·开发语言
Cyan_RA933 分钟前
SpringMVC @RequestMapping的使用演示和细节 详解
java·开发语言·后端·spring·mvc·ssm·springmvc
l1t2 小时前
利用DeepSeek实现服务器客户端模式的DuckDB原型
服务器·c语言·数据库·人工智能·postgresql·协议·duckdb
喵手3 小时前
玩转Java网络编程:基于Socket的服务器和客户端开发!
java·服务器·网络
再见晴天*_*3 小时前
SpringBoot 中单独一个类中运行main方法报错:找不到或无法加载主类
java·开发语言·intellij idea
MarkHard1237 小时前
如何利用redis使用一个滑动窗口限流
数据库·redis·缓存
hdsoft_huge7 小时前
Java & Spring Boot常见异常全解析:原因、危害、处理与防范
java·开发语言·spring boot
雨白7 小时前
Java 多线程指南:从基础用法到线程安全
android·java
Hungry_Shark8 小时前
IDEA版本控制管理之使用Gitee
java·gitee·intellij-idea
赛姐在努力.8 小时前
《IDEA 突然“三无”?三秒找回消失的绿色启动键、主菜单和项目树!》
java·intellij-idea