Springboot环境变量占位符语法

26 阅读1分钟

前言

Spring Boot 中,环境变量占位符主要通过 ${...} 语法来引用外部配置,在部署的时候,可以从外部传入,不用写死在程序

环境变量命名转换规则

基本用法

application.properties / application.yml

# 引用系统环境变量
server.port=${PORT:8080}
spring.datasource.url=${DB_URL:jdbc:mysql://localhost:3306/mydb}
spring.datasource.username=${DB_USERNAME:root}
spring.datasource.password=${DB_PASSWORD:123456}
server:
  port: ${PORT:8080}
spring:
  datasource:
    url: ${DB_URL:jdbc:mysql://localhost:3306/mydb}
    username: ${DB_USERNAME:root}
    password: ${DB_PASSWORD:123456}

冒号 : 后面是默认值,当环境变量不存在时使用。

环境变量命名转换规则

Spring Boot 会自动将环境变量名转换为属性名,规则如下:

预期属性名推荐环境变量名
server.portSERVER_PORT
myapp.service.urlMYAPP_SERVICE_URL
myapp.max-pool-sizeMYAPP_MAX_POOL_SIZE
  • 下划线 _ → 转换为点 . 或破折号 -
  • 大写字母 → 转换为小写

所以在容器化部署(Docker/K8s)中,通常使用全大写 + 下划线的形式来设置环境变量。

配置优先级(从高到低)

  1. 命令行参数--server.port=9090
  2. JVM 系统属性-Dserver.port=9090
  3. 操作系统环境变量export SERVER_PORT=9090
  4. 外部配置文件config/application.yml
  5. 内部配置文件classpath:/application.yml
  6. 默认值:占位符中 : 后面的值

总结

生产环境中密码、密钥等敏感信息不建议直接写在配置文件中,可使用 Jasypt 加密或通过环境变量/密钥管理服务注入。