如何在 Spring Boot 中指定不同的配置文件?

介紹

Spring Boot 提供了多種方式來管理和加載配置文件,特別是在多環境配置下,比如開發、測試和生產環境。通過指定不同的配置文件,可以靈活地調整應用程序的行為,以適應不同的需求。本文將介紹在 Spring Boot 中如何指定使用不同的配置文件,并詳細講解幾種常見的方式。


1. 通過 application.propertiesapplication.yml 文件指定配置

Spring Boot 默認會加載 src/main/resources 目錄下的 application.propertiesapplication.yml 文件。這兩個文件用于配置應用程序的各種屬性,如端口、數據源等。

示例:

假設你有一個 application.properties 文件,內容如下:

server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/devdb

這種方式非常簡單且直觀,但如果你希望根據不同的環境(例如開發環境、生產環境)加載不同的配置文件,Spring Boot 允許你使用 Profile 來實現。


2. 通過 spring.config.location 指定配置文件的位置

有時你可能需要將配置文件放置在應用程序默認位置以外的地方,Spring Boot 提供了 spring.config.location 參數來指定自定義的配置文件路徑。你可以在啟動時通過命令行參數來設置這個位置。

示例:

java -jar myapp.jar --spring.config.location=classpath:/custom-config/application.properties

或者,你也可以指定多個配置文件路徑:

java -jar myapp.jar --spring.config.location=classpath:/config/,classpath:/other-config/

這種方式非常適合需要使用多個外部配置文件的場景。


3. 通過 spring.config.name 指定配置文件的名稱

如果你希望使用不同于默認名稱(application.propertiesapplication.yml)的配置文件,可以通過 spring.config.name 參數來指定配置文件的名稱。

示例:

java -jar myapp.jar --spring.config.name=myapp-config

這樣,Spring Boot 會去查找名為 myapp-config.propertiesmyapp-config.yml 的配置文件,而不是默認的 application.properties


4. 通過 spring.profiles.active 指定激活的 Profile

Spring Boot 支持 Profile 功能,允許你為不同的環境提供不同的配置。當你在配置文件中配置了多個 profile 時,可以使用 spring.profiles.active 參數來指定要激活的 profile,這樣 Spring Boot 會自動加載與該 profile 相關的配置文件。

示例:

application.properties 中,你可以這樣設置:

spring.profiles.active=dev

如果你希望在命令行中指定,可以這樣做:

java -jar myapp.jar --spring.profiles.active=prod

然后,你可以為每個 profile 創建不同的配置文件,例如:

  • application-dev.propertiesapplication-dev.yml(開發環境)
  • application-prod.propertiesapplication-prod.yml(生產環境)

Spring Boot 會根據指定的 profile 自動加載相應的配置文件。


5. 通過命令行參數指定配置文件

在啟動 Spring Boot 應用時,你可以通過命令行參數來直接指定配置文件的位置或名稱,這使得動態配置變得非常靈活。

示例:

java -jar myapp.jar --spring.config.location=file:/path/to/config/application.properties

這種方式可以讓你指定配置文件的位置,不需要修改源碼,只需在啟動時指定路徑。


6. 通過 @PropertySource 指定外部配置文件

@PropertySource 注解允許你在 Java 配置類中加載外部配置文件。通常用于加載不在默認位置的配置文件。這種方式特別適用于從外部位置加載配置文件,而不需要通過命令行或 profile 配置。

示例:

@Configuration
@PropertySource("classpath:external-config.properties")
public class MyConfig {// 配置類邏輯
}

在這種方式下,你可以指定具體的外部配置文件路徑,無論是類路徑中的文件還是文件系統中的文件。


7. 通過環境變量指定配置文件

除了通過命令行參數指定配置文件外,你還可以通過操作系統的環境變量來指定配置文件的位置。環境變量可以幫助你在不同的部署環境中靈活地配置應用。

示例:

在 Unix/Linux 系統中,你可以設置環境變量:

export SPRING_CONFIG_LOCATION=/path/to/config/
export SPRING_PROFILES_ACTIVE=prod
java -jar myapp.jar

在 Windows 系統中:

set SPRING_CONFIG_LOCATION=C:\path\to\config\
set SPRING_PROFILES_ACTIVE=prod
java -jar myapp.jar

通過這種方式,你可以在運行時靈活地配置應用的行為,而無需修改配置文件。


小結

在 Spring Boot 中,指定不同的配置文件非常靈活。你可以通過以下幾種方式來控制應用程序使用的配置文件:

  • 使用 spring.config.locationspring.config.name 來指定配置文件的位置和名稱。
  • 通過 spring.profiles.active 來指定加載不同環境的配置。
  • 命令行參數和環境變量 提供了靈活的動態配置方式。
  • @PropertySource 注解允許在 Java 配置類中加載外部配置文件。

這些方式可以幫助你在不同的環境中輕松切換配置文件,確保應用程序在各個階段都能按預期運行。根據你的需求選擇合適的方式,讓配置管理更加靈活和高效。

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

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

相關文章

在centOS源碼編譯方式安裝MySQL5.7

一、前言 在生產環境中部署數據庫時,很多人會選擇直接使用 yum/apt 包管理器 安裝 MySQL,這樣簡單快速,但缺點是版本受限,靈活性不足。對于需要指定版本、啟用特定編譯參數或優化的場景,源碼編譯安裝 MySQL 就顯得非常…

探討Hyperband 等主要機器學習調優方法的機制和權衡

本篇文章Master Hyperband — An Efficient Hyperparameter Tuning Method in Machine Learning深入探討了Hyperband這一高效的超參數調優方法。文章的技術亮點在于其結合了多臂老虎機策略和逐次減半算法,能夠在大搜索空間中快速剔除表現不佳的配置,從而…

Mysql:InnoDB 關鍵特性

目錄 一、插入緩沖(Change Buffer)→ 快遞驛站的 “臨時存放區” 二、兩次寫(Double Write)→ 重要文件的 “備份存檔” 三、自適應哈希索引(AHI)→ 圖書館的 “熱門書快捷查找區” 四、異步 IO&#x…

STM32-----SPI

SPI簡介SCK:和I2C中SCL的時鐘線一個作用,都是在高電平拿出數據,在低電平寫數據MOSI:主機輸出從機輸入MISO:主機輸入從機輸出,只有當對應從機的SS為低電平,從機的MISO引腳才能設置推挽輸出,當從機SS為高電平時&#xff…

華為考試:HCIE數通考試難度分析

隨著信息技術的飛速發展,網絡技術已成為支撐各行各業運轉的重要基礎,市場對高水平網絡技術人才的需求持續增長。HCIE作為華為認證體系中的最高級別認證,代表了網絡技術領域的專業頂尖水平。本文將對HCIE數通認證的考試內容、難度及備考策略進…

一些常用的激活函數及繪圖

深度網絡的一些常用激活函數,并通過matplot繪制出來: import matplotlib.pyplot as plt import numpy as npdef relu(x):return np.maximum(0, x)def leaky_relu(x, alpha0.01):return np.where(x > 0, x, alpha * x)def gelu(x):return 0.5 * x * (1…

AE蘋果手機iPhone 17展示動畫片頭模板 App Promo Phone 17 Pro

專為 App 發布會、電商促銷、新品宣傳 打造的 iPhone 17 Pro 動畫展示 AE 模板。 4K 超清分辨率 26 張可替換照片位,無需第三方插件,拖拽即可輸出專業級手機宣傳片。 核心亮點 4K 超清:38402160 分辨率,大屏投放與社媒高清壓縮無…

基于Python的云原生TodoList Demo 項目,驗證云原生核心特性

以下是一個基于 Python 的云原生 TodoList Demo 項目,涵蓋 容器化、Kubernetes 編排、CI/CD、可觀測性、彈性擴縮容 等核心云原生特性,代碼簡潔且附詳細操作指南,適合入門學習。項目概覽 目標:實現一個支持增刪改查(CR…

go 日志的分裝和使用 Zap + lumberjack

自帶的log無法滿足 按大小輪轉 ,按天數清理舊日志 ,自動壓縮 ,限制備份數量 ,防止磁盤寫滿 ,生產環境推薦 等 使用 Zap lumberjack package mainimport ("go.uber.org/zap""go.uber.org/zap/zapcore&q…

【.Net技術棧梳理】01-核心框架與運行時(CLR)

文章目錄1 .NET Runtime(CLR-公共語言運行時)1.1 中間語言 IL1.1.1 從源代碼到通用中間語言(IL)1.1.2 運行時加載:CLR登場1.1.3 核心步驟:即時編譯 (JIT Compilation)1.1.4 執行與內存管理(GC&a…

Claude Code 平替:OpenAI發布 Codex CLI ,GPT-5 國內直接使用

openai推出的命令行編程工具codex已經可以使用最新 GPT-5 模型,擁有可媲美 Claude Code 的 AI 編碼能力。本文將指導你在 Windows 系統上部署原生的 Codex CLI 程序,并接入超低價中轉 API,讓你在國內直接用上超高性價比的 OpenAI Codex CLI 應…

在VS2022的WPF仿真,為什么在XAML實時預覽點擊 ce.xaml頁面控件,卻不會自動跳轉到具體代碼,這樣不方便我修改代碼,

在VS2022的WPF仿真,為什么在XAML實時預覽點擊 WpfApp1\FunctionalModule\08Replace\Replace.xaml頁面控件,卻不會自動跳轉到具體代碼,這樣不方便我修改代碼,

Git Bash 別名

有些常用的指令參數非常多,每次都要輸入好多參數,我們可以使用別名。Linux 系統中很多 shell,包括 bash,sh,zsh,dash 和 korn 等,不管哪種 shell 都會有一個 .bashrc 的隱藏文件,它就…

Centos7部署ceph存儲

一、準備5臺centos7主機 node節點雙網卡&#xff08;1個內部檢測&#xff0c;1個外部使用&#xff09;node節點都添加新網卡關閉防火墻和上下文都需要添加hosts文件都需要cat > /etc/hosts << EOF > 127.0.0.1 localhost localhost.localdomain localhost4 loca…

2025.9.10總結

今日感悟&#xff1a;刷到00后下班去菜市場撿菜的熱點視頻&#xff0c;確實挺有意思&#xff0c;不得不說&#xff0c;又省錢又好玩。雖然每天晚上能免費領個25塊錢的水果回去&#xff0c;但確實沒有什么新鮮感了。別人下班還能撿撿菜放松下&#xff0c;我下班&#xff0c;除了…

【數據結構與算符Trip第2站】稀疏數組

稀疏sparsearray數組 什么是稀疏數組&#xff1f; 稀疏數組是一種特殊的數據結構&#xff0c;用于高效存儲和表示大部分元素為零&#xff08;或默認值&#xff09;的數組。它通過只存儲非零元素的位置和值來節省內存空間。是一種壓縮數組。 實現原理 在Go語言中&#xff0c;稀疏…

Sub-GHz無線收發單片機,低功耗物聯網通信的硬件“基石”

隨著物聯網應用持續向規模化部署、廣域化覆蓋與高效化協同邁進&#xff0c; 作為IoT終端設備實現無線交互的核心通信單元之一——Sub-GHz無線收發單片機&#xff08;Sub-GHz射頻收發芯片與單片機高度集成&#xff09;已成為系統設計中進一步簡化外圍元件數量、縮小硬件體積、降…

用Typescript 的方式封裝Vue3的表單綁定,支持防抖等功能

在 Vue3 中結合 TypeScript 封裝表單綁定方案時&#xff0c;需要綜合考慮類型安全、功能擴展性和開發體驗。以下是一個包含防抖功能、支持多種表單控件、具備完整類型推導的封裝方案&#xff0c;全文約 2300 字&#xff1a; 方案設計思路 組合式函數封裝&#xff1a;使用 Vue3 …

中悅大華通過訂單日記實現流程重構之路

一、客戶背景 安徽中悅大華高速流體機械有限公司&#xff0c;成立于2023年&#xff0c;位于安徽省宣城市&#xff0c;是一家以從事電子設備制造為主的企業&#xff0c;在多年的商業經營中已成為業界翹楚。 在業務不斷壯大的過程中&#xff0c;面臨生產協作效率低&#xff0c;庫…

【Springboot】介紹啟動類和啟動過程

【Springboot】介紹啟動類和啟動過程【一】Spring Boot 啟動類的注解【1】核心注解&#xff1a;SpringBootApplication&#xff08;1&#xff09;?SpringBootConfiguration?&#xff1a;Spring容器會從該類中加載Bean定義&#xff08;2&#xff09;?EnableAutoConfiguration…