当前位置: 首页 > news >正文

《在 Spring Boot 中安全使用 Qwen API-KEY:环境变量替代明文配置的最佳实践》

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

http://www.xdnf.cn/news/1264105.html

相关文章:

  • Word中怎样插入特殊符号
  • 智慧社区(九)——事务加持下的小区删除操作
  • Vue 路由跳转
  • 【JAVA EE初阶】多线程(进阶)
  • [案例十] NX二次开发批量替换组件功能(装配环境)
  • C 语言链表数据结构
  • 智驭全球波动:跨境量化交易系统2025解决方案
  • 嵌入式Linux学习 - 数据结构6
  • 机器学习——支持向量机(SVM)实战案例
  • wodpress结构化数据对SEO的作用
  • 在 Debian 系统上安装 Redis服务
  • R语言代码加密(1)
  • OpenBMC中libgpio架构与驱动交互全解析:从硬件映射到应用控制
  • 《Graph machine learning for integrated multi-omics analysis》
  • 机器学习——KMeans聚类算法(算法原理+超参数详解+实战案例)
  • Vuex 数据共享
  • Shell脚本实现自动封禁恶意扫描IP
  • 第39周——训练自己的数据集
  • vscode EIDE 无法编译,提示 “文件名、目录名或卷标语法不正确;
  • C语言编译流程讲解
  • centos出现ping: baidu.com: 未知的名称或服务问题
  • DMETL简单介绍、安装部署和入门尝试
  • nflsoi 8.8 题解
  • Linux 内核发包流程与路由控制实战
  • 用 “故事 + 价值观” 快速建立 IP 信任感
  • 亚马逊广告运营如何平衡ASIN投放和关键词投放
  • Chrome DevTools Protocol 开启协议监视器
  • C/C++与JavaScript的WebAssembly协作开发指南
  • Vue框架总结案例
  • 机器学习-----SVM(支持向量机)算法简介