Spring Boot 项目中,多种设置环境变量的方式
在 Spring Boot 项目中,有多种设置环境变量的方式,我按照优先级从高到低列出:
- 命令行参数:
java -jar app.jar --MYSQL_HOST=localhost
- 系统环境变量:
# Linux/Mac
export MYSQL_HOST=localhost
# Windows (CMD)
set MYSQL_HOST=localhost
# Windows (PowerShell)
$env:MYSQL_HOST = "localhost"
.env
文件: 在项目根目录创建.env
文件:
MYSQL_HOST=localhost
MYSQL_PORT=3306
需要添加依赖:
implementation 'me.paulschwarz:spring-dotenv:4.0.0'
- IDE 环境变量设置:
IntelliJ IDEA:
- 打开 "Run/Debug Configurations"
- 在 "Environment variables" 中添加
- 或者在 "VM options" 中添加
-DMYSQL_HOST=localhost
VS Code:
- 创建
.vscode/launch.json
{ "configurations": [{ "type": "java", "name": "Spring Boot App", "env": { "MYSQL_HOST": "localhost" } }] }
- 创建
- 配置文件:
application.yml
:
spring:
config:
import: optional:file:.env[.properties]
- Docker 环境变量:
ENV MYSQL_HOST=localhost
或者在运行时:
docker run -e MYSQL_HOST=localhost myapp
- Kubernetes ConfigMap/Secret:
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config
data:
MYSQL_HOST: "localhost"
现在你有了多种设置环境变量的方式:
本地开发:
- 使用
.env
文件(最推荐) - 或在 IDE 中配置
- 配置一次就可以一直使用
- 使用
测试环境:
- 使用系统环境变量
- 或使用命令行参数
- 便于临时更改和测试
生产环境:
- 使用系统环境变量
- 或使用容器环境变量
- 更安全,更易于管理
CI/CD 环境:
- 使用 CI/CD 平台的环境变量功能
- 例如 GitHub Actions 的 Secrets
记住:
- 不同环境使用不同的设置方式
- 敏感信息优先使用环境变量
- 遵循优先级规则
- 保持模板文件更新
- 确保敏感信息不被提交到 Git