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.yml
或application.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