java可通过自定义环境变量(如app_env、db_url)向应用传递配置,需在系统中新建变量并用system.getenv()读取;spring boot支持自动映射为小写短横线格式(如my_service_timeout→my.service.timeout),也支持启动时临时设置。

Java 本身不直接通过环境变量接收“自定义业务参数”,但你可以在 Java 运行时,借助环境变量向程序传递配置值——关键在于**如何设置 + 如何读取**。这不是 JDK 环境变量(如 JAVA_HOME)的配置,而是你为自己的 Java 应用**额外定义并使用的环境变量**。
为什么要添加自定义环境变量
用于解耦配置与代码,比如:
- 数据库连接地址(DEV/PROD 环境切换)
- 第三方 API 密钥或 Token
- 日志级别、缓存开关等运行时开关
- 避免硬编码,适配容器化(Docker/K8s)部署
Windows 下添加自定义环境变量(系统级或用户级)
步骤和 JDK 配置类似,只是变量名由你定义(如 APP_ENV=prod、DB_URL=jdbc:mysql://localhost:3306/mydb):
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 右键“此电脑” → 属性 → 高级系统设置 → 环境变量
- 在【系统变量】或【用户变量】区域点击“新建”
- 输入变量名(如 MY_SERVICE_TIMEOUT)和变量值(如 30000)
- 点击确定保存,重启命令行窗口使新变量生效
Java 程序中读取自定义环境变量
使用 System.getenv("变量名") 获取字符串值,注意返回值可能为 null,需判空:
String timeoutStr = System.getenv("MY_SERVICE_TIMEOUT");
int timeout = timeoutStr != null ? Integer.parseInt(timeoutStr) : 5000;
Spring Boot 项目更推荐用 @Value("${my.service.timeout:5000}") 或 @ConfigurationProperties 绑定,底层也支持从环境变量自动映射(如 MY_SERVICE_TIMEOUT 自动转为 my.service.timeout)。
启动 Java 命令时临时传入(无需全局配置)
适合测试或 CI/CD 场景,用 set(Windows)或 export(Linux/macOS)配合 java 命令:
- Windows CMD:set APP_MODE=debug && java -jar app.jar
- Linux/macOS:APP_MODE=debug java -jar app.jar
- Docker 启动:docker run -e "LOG_LEVEL=warn" my-java-app
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










