《在 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.pswp.cn/news/918544.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/918544.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nginx 反向代理与负载均衡架构

一、反向代理基础 实验目的:通过 Nginx 反向代理,将客户端请求按类型(静态页面 / 动态 PHP 页面)转发到不同的后端服务器(RS1 处理静态资源,RS2 处理动态请求),实现 “客户端只与代…

【Mybatis入门】配置Mybatis(IDEA)

Mybatis和JDBC一样,是连接数据库的工具。它是一款优秀的持久层框架,主要用于 Java 语言中简化数据库操作,实现对象与数据库表之间的映射。Mybatis相比于JDBC的优势Mybatis消除了传统 JDBC 代码中繁琐的手动处理、参数设置、结果集解析等重复工…

多路转接之epoll 【接口】【细节问题】【LT与ET模式】【Reactor】

目录 一.接口 1.1epoll_creaet 1.2epoll_ctl 1.3epoll_wait 二.细节问题 2.1 工作原理 2.2 epoll的demo 2.3 epoll的优点 三. LT 与 ET模式 理解ET 四. reactor 一.接口 1.1epoll_creaet 注意返回值是一个文件描述符 创建一个epoll模型 1.2epoll_ctl 返回值&…

渗透测试现已成为 CISO 战略的核心

随着数字供应链的扩展以及生成式人工智能在关键系统中的嵌入,安全领导者正在重新思考其网络安全策略。Emerald Research 最近对 225 位安全领导者进行的一项调查发现,68% 的人担心第三方软件和组件带来的风险。虽然大多数受访者表示他们正在满足监管要求…

音视频学习(五十三):音频重采样

概述 音频重采样(sample rate conversion, SRC)是把采样率从 Fs_in 变换为 Fs_out 的过程。常见场景有格式转换(44.1→48 kHz)、采样率匹配(播放链路统一采样率)、以及通信中语音采样率升降(8 k…

【C#】正则表达式

一、核心优势:用一小段规则搞定大量复杂的字符串匹配,查找和替换,并且可移植可复用。使用正则表达式的好处:1. 强大且灵活:可以一次性匹配非常复杂的规则,比如验证邮箱、提取特定的格式日志、解析URL&#…

【[特殊字符][特殊字符] 协变与逆变:用“动物收容所”讲清楚 PHP 类型的“灵活继承”】

你有没有遇到过这样的问题:“为什么子类方法可以返回 Cat,而父类只写了返回 Animal?” “为什么参数反而能从 CatFood 变成更宽泛的 Food?”这些看似“违反直觉”的设计,其实背后有一个优雅的编程概念:协变…

cesium/resium 修改子模型材质

我是 www.v2ex.com/t/1151549 的作者,在csdn这边补全一些更多的信息 相关工具 主项目插件版本: "cesium": "^1.131.0",、"resium": "^1.19.0-beta.1"、"three": "^0.178.0"、"react…

nvm install 14.21.3 时npm 无法下载和识别

错误:C:\Users\H3C>nvm install 14.21.3 Downloading node.js version 14.21.3 (64-bit)... Complete Downloading npm... Creating C:\Users\H3C\AppData\Local\Temp\nvm-install-939491942\temp Downloading npm version 6.14.18... Error while downloading h…

【网络运维】Linux:LNMP 项目实践

LNMP 项目实践 简介:什么是 LAMP/LNMP LAMP:LinuxApacheMysql/MariadbPHP/Python/Perl。 LNMP:LinuxNginxMysql/MariadbPHP/Python/Perl。 Linux:操作系统,提供程序运行基础。Apache/Nginx:Web 服务器&…

用 Docker 安装并启动 MySQL:从零到实战的完整指南

用 Docker 安装并启动 MySQL:从零到实战的完整指南MySQL 是目前最流行的关系型数据库之一,广泛应用于各类应用系统中。使用 Docker 部署 MySQL 可以极大简化环境配置,保证开发、测试和生产环境的一致性。本文将详细介绍如何使用 Docker 安装、…

动态规划----1.爬楼梯

70. 爬楼梯 - 力扣(LeetCode) /** 1阶:1步,即1种; 2阶:1步1步或直接2步,即2种 f(1) 1,f(2) 2 3阶:由1阶迈2步,或2阶迈一步; 4阶:由2阶迈2步,或3阶1步; n阶:由n-2阶迈2步,或n-1阶迈1步 f(n) f(n - 1) f(n - 2) */ class Solution {/**1阶:1步,即1种…

special topic 11 (1)

preface 虽然我知道专业课必须得学,但是要学的东西,好多,我对专业课很害怕,稍微往后挪一挪,今天学了两个强化网课之后再学专业课吧。今天的目标是学完 11 到 14.任重道远,加油!从今天开始尽量早…

MTD和FTL的关系

在嵌入式存储系统里,MTD(Memory Technology Device)和 FTL(Flash Translation Layer)是上下两层、互相配合的概念。你可以把它想成**“原始硬件接口”和“硬盘驱动”**的关系。1. MTD 是什么定位:内核里对原…

自动驾驶 HIL 测试:构建 “以假乱真” 的实时数据注入系统

01 引言在端到端自动驾驶的研发竞赛中,算法的迭代速度远超物理世界的测试能力。单纯依赖路测不仅成本高昂、周期漫长,更无法穷尽决定系统安全性的关键边缘场景(Corner Cases)。因此,硬件在环(HIL&#xff0…

jdk升级

列出所有的jdk版本 /usr/libexec/java_home -V 永久切换版本 export JAVA_HOME(/usr/libexec/javahome−v11)exportPATH(/usr/libexec/java_home -v 11) export PATH(/usr/libexec/javah​ome−v11)exportPATHJAVA_HOME/bin:$PATH 保存后执行 source ~/.zshrc

Openlayers基础教程|从前端框架到GIS开发系列课程(24)openlayers结合canva绘制矩形绘制线

本章节讲解Canvas如何结合 Openlayer 使用&#xff0c;首先我们讲解Canvas的绘图基础。我们初始化地图的时候可以看见&#xff0c;实际上Openlayer的地图就是用Canvas实现绘制的。Canvas绘制基本概念什么是canvas&#xff1f;HTML5 <canvas> 元素用于图形的绘制&#…

深度学习——01 深度学习简介

1 什么是深度学习&#xff1f;人工智能是个大范畴&#xff0c;目标是打造智能机器和程序&#xff1b; 机器学习是实现人工智能的一种途径&#xff0c;它能让机器在不被明确编程的情况下自主学习&#xff1b;而深度学习&#xff0c;是机器学习的一个分支&#xff0c;它是基于深度…

自然语言处理( NLP)基础

一、基本概念自然语言处理也就是Natural Language Processing&#xff0c;简称NLP。NLP就是人工只能和语言学领域的一个分支&#xff0c;涉及到计算机与人类语言之间的相互作用。主要目标是让计算机能够理解、解释和生成人类语言的数据。1 自然语言处理的基本介绍NLP包括但不限…

云原生作业(nginx)

目录 1 Web 服务基础介绍 1.1 Web 服务介绍 1.1.1 Apache 经典的 Web 服务端 1.1.2 Nginx-高性能的 Web 服务端 1.1.3 用户访问体验和性能 1.1.4 服务端 I/O 流程 1.2 I/O 模型 1.2.1 I/O 模型相关概念 1.2.2 网络 I/O 模型 1.2.3 五种 IO 对比 1.2.4 I/O 的具体实现…