SpringBoot的外部化配置

一、什么是外部化配置

外部化配置是指把應用程序中各種可配置的參數、屬性等信息,從代碼內部提取出來,放置在外部的配置文件、數據庫或配置中心等地方(比如使用.properties、.yml 或.xml 等格式的文件)進行管理。提高應用程序的可維護性、可擴展性和靈活性。通過將配置信息外部化,無需修改和重新部署代碼,就可以調整應用程序的行為和參數,以適應不同的環境(如開發、測試、生產環境)或業務需求的變化。

二、springboot默認讀取路徑

springboot默認的配置文件是application.properties,通過springboot自動的腳手架生成的文件結構如下。其application.properties位于resource下方。

2.1 類路徑下

創建一個配置類,在配置類中訪問配置文件中的myapp.name的值,看看springboot的應用程序會不會自動找到其application.properties中的內容。

package com.example.propertieslocation.config;import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;//納入IoC容器管理
@Component
public class appConfig {@Value("${myapp.name}")private String appPath;public void printInfo(){System.out.println("App Path: " + appPath); }}

?在test中進行測試,發現springboot程序確實可以找到application.properties中的內容。

2.2 類路徑下的config下

?在其類路徑下新建config目錄,并在該目錄中新建application.properties

?再次進行測試,看看其找到的application.properties的文件到底位在哪。

可以看出來其優先找了config目錄下的application.properties。

2.3 外部化的直接路徑

在打包成jar包之前,主入口類添加如下代碼。

package com.example.propertieslocation;import com.example.propertieslocation.config.appConfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;@SpringBootApplication
public class PropertiesLocationApplication {public static void main(String[] args) {ConfigurableApplicationContext context = SpringApplication.run(PropertiesLocationApplication.class, args);appConfig appConfig =  context.getBean(appConfig.class);appConfig.printInfo();context.close();}}

點擊package打包使其成為jar包。

打包好的jar包如下

并新建application.properties

?進行測試,看springboot程序自動優先找到的是那個路徑下的配置文件

?測試結果如下

優先選擇了外部化配置的?application.properties。

2.4 外部化路徑下的config目錄中

?

并將外部化配置的config中application.properties的內容改成myapp.name=file:./config/。

測試如下:

總結

所以springboot程序查找application.properties的順序是,外部>內部;config中的>當前路徑下的。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/905549.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/905549.shtml
英文地址,請注明出處:http://en.pswp.cn/news/905549.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SQL中聯表的運用

當出現要大量數據去查詢時,不要一個個去SQL查詢,應該要批量的去查詢。 def batch_cavity_query(self, fuseids): “”“批量查詢cavity信息”“” if not fuseids: return {} # 創建臨時表批量查詢 try:# 創建臨時表self.cursor.execute("CREATE …

React面試常問問題詳解

以下是30個React面試中常見的問題及簡要解析,涵蓋基礎概念、核心原理、性能優化、Hooks、狀態管理等方面,適用于初中高級開發者準備面試時參考: 一、React 基礎與核心概念 React 是什么? React 是由 Facebook 開發的用于構建用戶界…

【vite好用的配置】自動導入組件、vue中的hook、路徑解析、打包配置、本地運行反向代理配置

前言 之前出了一篇自己搭建 后臺管理系統的文章,今天順便把vite配置,涉及到的一些給大家分享吧。 按需食用哈。 文章目錄 前言一、 自動導入vue中的hook、ref等1. 安裝插件2. 配置 Vite(vite.config.ts 或 vite.config.js)1&…

思科(Cisco ASA/Firepower)、華三(H3C)、華為(Huawei USG)防火墻 的基礎配置

以下是針對 思科(Cisco ASA/Firepower)、華三(H3C)、華為(Huawei USG)防火墻 的基礎配置指南,涵蓋 區域劃分、安全策略、NAT、路由 等核心功能。配置示例基于通用場景,實際部署時需根…

mac latex vscode 配置

mac latex vscode 配置 安裝mactex.pkg 這里有個快速下載的鏡像 https://mirrors.aliyun.com/CTAN/systems/mac/mactex/ 可以檢查是否將 PATH 寫入 export PATH"/Library/TeX/texbin:$PATH"vscode 下載插件 Latex Workshop 在配置文件 settings.json 中輸入如下的…

AI日報 · 2025年5月14日|Android 生態大型更新與多端 Gemini 集成

1、Google “Android?Show:?I/O?Edition” 匯總:設計、安全、Gemini 三線并進 北京時間 5?月?14?日凌晨(原文標注 5?月?13?日 PDT),Google 在 I/O 前夕舉辦的 Android?Show 一口氣公布四大方向更新:① Mater…

MySQL入門指南:環境搭建與服務管理全流程

引言 各位開發者朋友們好!今天我們將開啟MySQL的學習之旅 🌟 作為世界上最流行的開源關系型數據庫,MySQL在Web應用、企業系統等領域占據著舉足輕重的地位。無論你是剛入行的新手,還是想系統復習的老鳥,這篇教程都將為…

LLM 論文精讀(四)LLM Post-Training: A Deep Dive into Reasoning Large Language Models

這是一篇2025年發表在arxiv中的LLM領域論文,是一篇非常全面的綜述類論文,介紹了當前主流的強化學習方法在LLM上的應用,文章內容比較長,但建議LLM方面的從業人員反復認真閱讀。 寫在最前面 為了方便你的閱讀,以下幾點的…

從規則驅動到深度學習:自然語言生成的進化之路

自然語言生成技術正經歷著人類文明史上最劇烈的認知革命。這項起源于圖靈測試的技術,已經從簡單的符號操作演變為具備語義理解能力的智能系統。當我們回溯其發展歷程,看到的不僅是算法模型的迭代更新,更是一部人類認知自我突破的史詩。這場革…

如何實現Flask應用程序的安全性

在 Flask 應用中,確保安全性非常關鍵,尤其是當你將應用部署到公網環境中時。Flask 本身雖然輕量,但通過組合安全策略、擴展庫和最佳實踐,可以構建一個非常安全的 Web 應用。 一、常見 Flask 安全風險(必須防護) 安全問題 簡要說明 CSRF(跨站請求偽造) 惡意網站誘導用戶…

Chrome安裝最新vue-devtool插件

本vue-devtool版本是官方的 v7.6.8版本,兼容性好、功能齊全且穩定。 操作步驟: 方法一: 打開谷歌瀏覽器 --> 右上角三個點 --> 擴展程序 --> 管理擴展程序 --> 加載已解壓的擴展程序, 然后選擇解壓后的文件夾即可。…

【redis】jedis客戶端的使用

Jedis是Redis官方推薦的Java客戶端庫,提供了對Redis數據庫的全面支持,適用于單機、哨兵及集群模式。作為最老牌的Java Redis客戶端,其API設計直觀,與Redis命令高度對應,例如set、get等方法與原生命令一致,降…

Spark處理過程-轉換算子

大家前面的課程,我們學習了Spark RDD的基礎知識,知道了如何去創建RDD,那spark中具體有哪些rdd,它們有什么特點呢? 我們這節課來學習。 (一)RDD的處理過程 Spark使用Scala語言實現了RDD的API,程…

【Linux】多路轉接epoll、Linux高并發I/O多路復用

📚 博主的專欄 🐧 Linux | 🖥? C | 📊 數據結構 | 💡C 算法 | 🅒 C 語言 | 🌐 計算機網絡 上篇文章:五種IO模型與阻塞IO以及多路轉接select機制編寫echoserver 下篇文章…

【三維重建】三維場景生成:綜述

標題:《3D Scene Generation: A Survey》 來源:新加坡南洋理工大學 項目:https://github.com/hzxie/Awesome-3D-Scene-Generation 文章目錄 摘要一、前言二、準備工作2.1 任務定義2.2 三維場景表示2.3 生成模型 三、方法:分層分類…

前端~三維地圖(cesium)動態材質飛線

自定義飛線材質 FlyLineMaterial.ts import * as Cesium from "cesium";// 修改:新增流動區域顏色和速率參數 const FlyLineShaderSource uniform vec4 color; uniform vec4 flowColor; uniform float percent; uniform float speed;czm_material czm…

[Spring AOP 8] Spring AOP 源碼全流程總結

Spring AOP總結 更美觀清晰的版本在:Github 前面的章節: [Spring AOP 1] 從零開始的JDK動態代理 [Spring AOP 2] 從零開始的CGLIB動態代理 [Spring AOP 3] Spring選擇代理 [Spring AOP 4] Spring AOP 切點匹配 [Spring AOP 5] 高級切面與低級切面&#…

C#高級編程:加密解密

在數字化時代,數據安全是每個應用程序都必須重視的環節。無論是用戶的個人信息、敏感的商業數據,還是重要的系統配置,都需要得到妥善的保護。C# 作為一種廣泛應用的編程語言,提供了豐富且強大的加密解密功能,幫助開發者構建安全可靠的應用。本文將深入探討 C# 高級編程中的…

基于運動補償的前景檢測算法

這段代碼實現了基于運動補償的前景檢測算法。 主要功能包括: 運動補償模塊:使用基于網格的 KLT 特征跟蹤算法計算兩幀之間的運動,然后通過單應性變換實現幀間運動補償。前景檢測模塊:結合兩幀運動補償結果,通過幀間差…

使用matlab進行數據擬合

目錄 一、工作區建立數據 二、曲線擬合器(在"APP"中) 三、曲線擬合函數及參數 四、 在matlab中編寫代碼 一、工作區建立數據 首先,將數據在matlab工作區中生成。如圖1所示: 圖 1 二、曲線擬合器(在"APP"中) 然后,…