《在 Spring Boot 中安全使用 Qwen API-KEY:环境变量替代明文配置的最佳实践》
想要的效果其实就是 把 Qwen API-KEY 放到系统环境变量中,然后在 application.yml
里通过占位符读取,而不写明文。
这样即便 application.yml
被提交到 Git,也不会泄露 key。
分成三个步骤搞定:
1. 在系统中设置 Qwen API-KEY
假设真实的API-KEY是sk-12asdadba01231231b6a5asda9d7d
Mac / Linux
# 临时生效(只对当前终端会话有效)
export QWEN_API_KEY=sk-12asdadba01231231b6a5asda9d7d
# 永久生效(写入 shell 配置文件,比如 ~/.bashrc 或 ~/.zshrc)
echo 'export QWEN_API_KEY=sk-12asdadba01231231b6a5asda9d7d' >> ~/.zshrc
source ~/.zshrc
Windows(PowerShell)
# 临时生效(仅当前会话)
$env:QWEN_API_KEY="sk-12asdadba01231231b6a5asda9d7d"
# 永久生效
setx QWEN_API_KEY "sk-12asdadba01231231b6a5asda9d7d"
2. 在 application.yml
中引用环境变量
qwen:
api-key: ${QWEN_API_KEY}
${QWEN_API_KEY}
会从系统环境变量中读取值- 如果想给默认值(避免本地没设置时报错):
qwen:
api-key: ${QWEN_API_KEY:default-key-if-not-set}
3. 在 Spring Boot 中读取
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class QwenConfig {
@Value("${qwen.api-key}")
private String apiKey;
public String getApiKey() {
return apiKey;
}
}
这样 Spring Boot 启动时会自动读取系统的环境变量 QWEN_API_KEY
,
application.yml
就不需要暴露明文了。
💡 补充建议
如果你部署在服务器(比如 Docker / K8s),可以在启动容器时直接传环境变量:
docker run -e QWEN_API_KEY=sk-12asdadba01231231b6a5asda9d7d my-springboot-app
读取 环境变量 → application.yml → 默认值
的。
4. 注意
如果启动IDEA,发现读取不到设置的环境变量的话,可以先用羡慕这行命令读取环境变量,看看是否生效了。
echo $QWEN_API_KEY
如果这个时候仍然没有获取到内容,但是去~/.zshrc下可以查看到对应的值的话,原因就是当时已经打开过IDEA了,这个时候读取不到设置的环境变量,需要重新退出IDEA,然后重新打开去输入上述命令查看。