【SpringBoot】 启动时,修改默认配置文件名称

前言

  • spring boot version : 2.0.0.RELEASE
  • maven version : 3.5.0

在不同的环境下,依赖的外部资源是不一样的。比如,在 windows 上开发,在 linux 下进行测试时,无法将开发环境和测试 i 环境构造成一致的。
此时,就需要两个配置文件来解决此事。开发环境一个配置文件,测试环境一个配置文件。

方式 1

使用 --spring.profiles.active=xxx。参考 Spring Boot Reference Guide : 24.4 Profile-specific Properties

  • 步骤 1:
    先为开发环境和测试环境分别编写配置文件,配置文件中保留不同之处。开发环境配置文件为:application-dev.properties;测试环境配置文件为:application-test.properties。
    再将开发环境和测试环境中,相同的配置放到同一个配置文件(application.properties)中。
  • 步骤 2:
    启动时,使用 --spring.profiles.active=xxx,指定不同的 profile。
    开发环境启动时,在命令行参数中提供 spring.profiles.active=dev。例:mvn spring-boot:run -Dspring.profiles.active=dev
    测试环境启动时,在命令行参数中提供 spring.profiles.active=test。例:mvn spring-boot:run -Dspring.profiles.active=test

说明

  • java 命令启动时,- -spring.profiles.active=dev,前面的 “- -” 很重要。
  • mvn 命令启动时,-Dspring.profiles.active=dev,前面的 “-D” 很重要。
  • spring.profiles.active=dev 时,配置文件匹配顺序:application-dev.properties、application.properties。
    • 如果 application-dev.properties 中有的配置,则会以 application-dev.properties 的配置为准。
    • 如果 application-dev.properties 中没有的配置,则会以 application.properties 的配置为准。

方式 2

使用 --spring.config.name=xxx。参考 Spring Boot Reference Guide :24.3 Application Property Files

  • 步骤 1:
    先为开发环境和测试环境分别编写配置文件,配置文件中保留不同之处。开发环境配置文件为:application-dev.properties;测试环境配置文件为:application-test.properties。
  • 步骤 2:
    启动时,使用 --spring.config.name=xxx,指定配置文件名。
    开发环境启动时,在命令行参数中提供 spring.config.name=application-dev。例:mvn spring-boot:run -Dspring.config.name=application-dev
    测试环境启动时,在命令行参数中提供 spring.config.name=application-test。例:mvn spring-boot:run -Dspring.config.name=application-test

说明

  • java 命令启动时,–spring.profiles.active=application-dev,前面的 “–” 很重要。
  • mvn 命令启动时,-Dspring.profiles.active=application-dev,前面的 “-D” 很重要。
  • 当 - -spring.config.name=application-dev 时,配置文件匹配顺序:application-dev.properties。
    • 如果 application-dev.properties 中有的配置,则会以 application-dev.properties 的配置为准。
    • 如果 application-dev.properties 中没有的配置,则为 null。

方式 3

使用 --spring.config.location=xxx。参考 Spring Boot Reference Guide :24.3 Application Property Files

同 --spring.config.name=xxx 类似。但是,–spring.config.location=xxx 可以连配置文件路径一起修改,也可以指定多个配置文件。
例:mvn spring-boot:run -Dspring.config.location=classpath:/config/application-test2.properties,classpath:application-test1.properties

说明

  • 指定多个配置文件时,后给出的配置文件覆盖先给出的配置文件。
    如果 application-test1.properties 中有的配置,则会以 application-test1.properties 的配置为准。
  • 如果 application-test1.properties 中没有的配置,但 application-test2.properties 中有的配置,则会以 application-test2.properties 的配置为准。
  • 如果 application-test1.properties 和 application-test2.properties 中都没有的配置,则为 null。

上述方法失效情况说明

  • 当 spring-boot-devtools 起效时,上述方法失效。
  • 当 pom 文件中包含 spring-boot-devtools 时,且以 mvn spring:boot 方式启动时,spring-boot-devtools 起效,上述方法失效。(可以使用个 pom 来解决,默认的 pom 中,包含 spring-boot-devtools ;另外一个 pom 中,如 pom-test.xml,不包含 spring-boot-devtools。用 mvn -f pom-test.xml spring:boot 启动即可。)
  • 当 pom 文件中包含 spring-boot-devtools 时,且以 java -jar 方式启动时,spring-boot-devtools 自动失效,上述方法有效。
  • 使用 eclipse 时,有无 spring-boot-devtools,上述方式都有失效。
posted @ 2024-06-27 10:51  CharyGao  阅读(13)  评论(0编辑  收藏  举报