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 加密或通过环境变量/密钥管理服务注入。

相关推荐
前端的日常2 小时前
一个人+AI做情侣食谱小程序,0 费用的服务器
前端·后端
IT_陈寒3 小时前
Vue的v-for里用了个临时变量,页面直接挂了
前端·人工智能·后端
步行cgn3 小时前
@ResponseBody 详解:Spring MVC 中把返回值直接写入响应体
java·spring·mvc
ServBay4 小时前
本地模型已经跑起来了,Copilot Fusion 为什么还要联网?
后端·ai编程·github copilot
武子康4 小时前
H3-World 的动作没按时发生,先检查时间线变成了什么
人工智能·后端·agent
苍何4 小时前
腾讯 Buddy One 来了,办公全家桶一键打通WorkBuddy(附教程)
后端
GIS数据转换器5 小时前
基于CIM的城市智慧供热监管服务平台
java·大数据·开发语言·人工智能·后端·物联网·struts
adfreedom5 小时前
如何避免每个业务系统中都有几十个枚举查询
后端
m0_639906945 小时前
SpringBoot自动配置原理
java·spring boot·后端
萧瑟余晖6 小时前
Spring Data综合实战与调优详解
java·后端·spring