同一个应用,在不同环境下配置不一样,例如开发环境、测试环境、线上环境,Spring Boot 默认通过 active profile 来选择运行的环境,例如下面选择 dev 环境:

  • 开发: gradle bootRun --args='--spring.profiles.active=dev'
  • 运行: java -jar demo.jar --spring.profiles.active=dev
  • 通过环境变量进行选择:
    • 环境变量: export SPRING_PROFILES_ACTIVE="dev"
    • 运行命令: gradle bootRun

运行时 application-dev.properties 中的配置会覆盖 application.properties 中同名的配置,application-dev.properties 中没有的配置则使用 application.properties 中的。

配置有多个来源,优先级如下:

  • 优先级最高的是命令行使用 --name=value 传入的配置
  • 其次是 active profile application-{env}.properties 中的配置
  • 最后才是 application.properties 的配置

1. 测试

application.properties:

username = Default-Username

application-dev.properties:

username = Dev-Username
@RestController
public class XController {
    @GetMapping("/api/pro")
    public String prop() {
        return username;
    }
}

启动服务器,访问 http://localhost:8080/api/pro 测试结果:

  • 启动命令 java -jar demo.jar: 返回 Default-Username
  • 启动命令 java -jar demo.jar --spring.profiles.active=dev: 返回 Dev-Username
  • 启动命令 java -jar demo.jar --username=Bob: 返回 Bob

results matching ""

    No results matching ""