Java中 System.getenv 怎么在 Spring Boot application.yml 中用 ${ENV_VAR} 读取
Spring Boot 通过 ${ENV_VAR} 以系统环境变量为基础,直接引用底层 System.getenv() 自动集成;全大写+下划线命名,支持默认值 ${MY_API_KEY:default-key},启动前设置生效。
System.getenv() 是 Java 原生获取操作系统环境变量的方法, Spring Boot 的 ${ENV_VAR} 基于占位符的底层 System.getenv()(以及 System.getProperty()、PropertySource 等等)来分析-所以你不需要手动调用 System.getenv(),Spring Boot 自动集成。
application.yml 中直接使用 ${ENV_VAR} 就行
Spring Boot 启动时会自动注册系统环境变量 PropertySource,优先级高于 application.yml 本身。只要存在环境变量,就可以在配置文件中使用 ${VAR_NAME} 引用:
- Linux/macOS 启动前设置:
export MY_API_KEY=abc123 - Windows CMD:
set MY_API_KEY=abc123 - 然后在
application.yml中写:api.key: ${MY_API_KEY}
建议增加默认值,避免因环境变量未设置而导致启动失败:
- api.key: ${MY_API_KEY:default-key} —— 变量不存在时使用
default-key - db.url: jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/mydb
- 注:冒号前后不得有空间,否则分析失败
环境变量名在 Linux/macOS 默认**全大写+下划线**,对大小写敏感:
Java Linux版
Java Linux版下载入口,提供 Oracle JDK 26.0.2 官方 Linux 安装包、Java 环境配置、JDBC 数据库连接和 Java 服务端开发相关信息。
下载
立即学习“Java免费学习笔记(深入);
export DB_URL=jdbc:h2:mem:test→${DB_URL}✅export db_url=...→${db_url}❌(大多数系统不识别小写环境的变量)- Spring Boot 会自动把
spring.datasource.url这种属性映射为SPRING_DATASOURCE_URL,但是,自定义变量建议统一大写
启动后检查实际加载配置:
- 访问
http://localhost:8080/actuator/env(需启用 actuator),搜索变量名 - 或在代码中打印:
System.out.println(System.getenv("MY_API_KEY"));和@Value("${api.key}") String key对比 - 如果
${MY_API_KEY}首先,确认环境变量是否为空 JVM 启动前设置(不 IDE 临时加入运行配置)

浙公网安备 33010602011771号