《在 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,然后重新打開去輸入上述命令查看。