Springboot环境变量占位符语法

前言

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

环境变量命名转换规则

基本用法

application.properties / application.yml

ini 复制代码
# 引用系统环境变量
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}
ruby 复制代码
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.port SERVER_PORT
myapp.service.url MYAPP_SERVICE_URL
myapp.max-pool-size MYAPP_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 加密或通过环境变量/密钥管理服务注入。

相关推荐
步行cgn3 小时前
Spring 基于 XML 的自动装配:byName 详解
java·后端·spring
不会c+3 小时前
Day02 - 需求分析与用例建模
spring
LuTshoes4 小时前
spring ai 实战 手搓 PlaneExecuteAgent
java·人工智能·spring·ai
边境悍匪4 小时前
蜗牛学苑 Java 智能体学习 Day42|项目周开发技术汇总 1 思维导图复盘
java·开发语言·spring boot·学习·spring
RISCV_Explorer5 小时前
RISC-V启动与运行时规范机制解析——BRS约定、HSM多核启动与设备树要求
后端·risc-v
星栈独行5 小时前
ADK-Rust 是什么?Rust 生态新一代 AI Agent 开发套件
人工智能·后端·rust
JavaGuide5 小时前
对标 MinIO!全新一代分布式文件系统正式发布
前端·后端
xcl09255 小时前
本地电竞服务交易系统架构设计与实战:从同城匹配到订单履约
java·spring boot
用户8356290780516 小时前
使用 Python 将 DOCX 转换为 Markdown
后端·python