《在 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
英文地址,請注明出處:http://en.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 的具體實現…