Spring Boot 外部配置文件(Java 学习笔记)

除了默认配置文件,Spring Boot还可以加载一些位于项目外部的配置文件,我们可以通过以下的两个参数,指定外部配置文件的路径:

spring:
  config:
  location
spring.config.addition-location

spring.config.location

我们可以将Spring Boot项目打包成JAR文件,然后在命令行启动命令中添加参数:spring.config.location,指定外部配置文件的路径:
java -jar {JAR} -spring.config.location={外部配置文件全路径}
需要留意:
使用该参数加载指定配置文件后,会让项目默认配置文件失效,Spring Boot将只加载指定的外部配置文件。
示例:

  1. 在myconfig目录下创建以下配置文件:my-application.yam:
server:
   port: 8080
  1. 使用mvn命令,将demo2项目打包成JAR
mvn clean package
  1. 打开命令行窗口,跳转到JAR文件所在目录,执行以下命令:
java -jar demo2-0.0.1-SNAPSHOT.jar --spring.config.location=E:\myconfig\my-application.yaml
  1. 运行查看应用配置是否修改

spring.config.additional-localtion

我们还可以在 Spring Boot 启动时,使用命令行参数 --spring.config.additional-location 来加载外部配置文件。

java -jar {JAR}  --spring.config.additional-location={外部配置文件全路径}

但与 --spring.config.location 不同,–spring.config.additional-location 不会使项目默认的配置文件失效,使用该命令行参数添加的外部配置文件会与项目默认的配置文件共同生效,形成互补配置,且其优先级是最高的,比所有默认配置文件的优先级都高。

实例:
将 springbootdemo 打包为 JAR 文件,打开命令行窗口,跳转到该项目 JAR 所在目录下,执行以下命令启动该项目。

java -jar demo2-0.0.1-SNAPSHOT.jar  --spring.config.additional-location=D:\myConfig\my-application.yml

注意:Maven 对项目进行打包时,位于项目根目录下的配置文件是无法被打包进项目的 JAR 包的,因此位于根目录下的默认配置文件无法在 JAR 中生效,即该项目将只加载指定的外部配置文件和项目类路径(classpath)下的默认配置文件,它们的加载优先级顺序为:

  1. spring.config.additional-location 指定的外部配置文件 my-application.yml
  2. classpath:/config/application.yml
  3. classpath:/application.yml

根据配置文件优先级分析可知:
以上三个配置文件中 my-application.yml 的优先级最高,因此该项目的服务器端口号为 “8088”;
只有 classpath:/config/application.yml 中配置了上下文路径(context-path),因此该项目的上下文路径为 “/helloworld”;
基于以上配置分析,得出该项目访问路径为“http://localhost:8088/helloWorld”。
通过上面的示例,我们看到将 Spring Boot 项目打包后,然后在命令行启动命令中添加 spring.config.additional-location 参数指定外部配置文件,会导致项目根目录下的配置文件无法被加载,我们可以通过以下 3 种方式解决这个问题。

  1. 在 IDEA 的运行配置(Run/Debug Configuration)中,添加虚拟机参数 -Dspring.config.additional-location=D:\myConfig\my-application.yml,指定外部配置文件;
  2. 在 IDEA 的运行配置(Run/Debug Configuration)中,添加程序运行参数 --spring.config.additional-location=D:\myConfig\my-application.yml,指定外部配置文件;
  3. 在主启动类中调用 System.setProperty()方法添加系统属性 spring.config.additional-location,指定外部配置文件。

原文学习

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值