最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot配置加載順序?qū)嵺`

 更新時間:2026年03月28日 16:11:53   作者:zhaoshuangjian  
這篇文章主要介紹了SpringBoot配置加載順序?qū)嵺`,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

前言

Spring Boot 不僅可以通過配置文件進行配置,還可以通過環(huán)境變量、命令行參數(shù)等多種形式進行配置。

這些配置都可以讓開發(fā)人員在不修改任何代碼的前提下,直接將一套 Spring Boot 應(yīng)用程序在不同的環(huán)境中運行。

一、Spring Boot 配置優(yōu)先級

以下是常用的 Spring Boot 配置形式及其加載順序(優(yōu)先級由高到低):

  • 命令行參數(shù)
  • 來自 java:comp/env 的 JNDI 屬性
  • Java 系統(tǒng)屬性(System.getProperties())
  • 操作系統(tǒng)環(huán)境變量
  • RandomValuePropertySource 配置的 random.* 屬性值
  • 配置文件(YAML文件、Properties 文件)
  • @Configuration 注解類上的 @PropertySource 指定的配置文件
  • 通過SpringApplication.setDefaultProperties 指定的默認屬性

以上所有形式的配置都會被加載,當存在相同配置內(nèi)容時,高優(yōu)先級的配置會覆蓋低優(yōu)先級的配置;存在不同的配置內(nèi)容時,高優(yōu)先級和低優(yōu)先級的配置內(nèi)容取并集,共同生效,形成互補配置。

二、命令行參數(shù)

Spring Boot 中的所有配置,都可以通過命令行參數(shù)進行指定,其配置形式如下。

java -jar {Jar文件名} --{參數(shù)1}={參數(shù)值1} --{參數(shù)2}={參數(shù)值2}

示例 1

在 springbootdemo 項目啟動時,使用以下命令。

java -jar springbootdemo-0.0.1-SNAPSHOT.jar --server.port=8081 --server.servlet.context-path=/bcb

命令行參數(shù)說明如下:

  • –server.port:指定服務(wù)器端口號;
  • –server.servlet.context-path:指定上下文路徑(項目的訪問路徑)。

執(zhí)行結(jié)果如下圖。

配置文件

Spring Boot 啟動時,會自動加載 JAR 包內(nèi)部及 JAR 包所在目錄指定位置的配置文件(Properties 文件、YAML 文件)

下圖中展示了 Spring Boot 自動加載的配置文件的位置及其加載順序,同一位置下,Properties 文件優(yōu)先級高于 YAML 文件。

說明如下:

  • /myBoot:表示 JAR 包所在目錄,目錄名稱自定義;
  • /childDir:表示 JAR 包所在目錄下 config目錄的子目錄,目錄名自定義;
  • JAR:表示 Spring Boot 項目打包生成的 JAR;
  • 其余帶有“/”標識的目錄的目錄名稱均不能修改。
  • 紅色數(shù)字:表示該配置文件的優(yōu)先級,數(shù)字越小優(yōu)先級越高。

這些配置文件的優(yōu)先級順序,遵循以下規(guī)則:

  • 先加載 JAR 包外的配置文件,再加載 JAR 包內(nèi)的配置文件;
  • 先加載 config 目錄內(nèi)的配置文件,再加載 config 目錄外的配置文件;
  • 先加載 config 子目錄下的配置文件,再加載 config 目錄下的配置文件;
  • 先加載 appliction-{profile}.properties/yml,再加載application.properties/yml;
  • 先加載 .properties 文件,再加載 .yml 文件。

示例 2

1、創(chuàng)建一個名為 mybootdemo 的 Spring Boot 項目,并在src/main/resoources下創(chuàng)建以下4個配置文件。

application.yml:默認配置application-dev.yml:開發(fā)環(huán)境配置application-test.yml:測試環(huán)境配置application-prod.yml:生產(chǎn)環(huán)境配置

1)在 applcation.yml 文件中,指定默認服務(wù)端口號(port)為 “8080”,上下文路徑(context-path)為“/mybootdemo”,并激活開發(fā)環(huán)境(dev)的 profile。

server:
  port: 8080 #端口號
  servlet:
    context-path: /mybootdemo #上下文路徑或項目訪問路徑
spring:
  profiles:
    active: dev #激活開發(fā)環(huán)境配置

2)在 application-dev.yml 中,指定開發(fā)環(huán)境端口號為 “8081”,上下文路徑為“/in-dev”,配置如下。

server:
  port: 8081 #開發(fā)環(huán)境端口號 8081
  servlet:
    context-path: /in-dev #開發(fā)環(huán)境上下文路徑為 in-dev
spring:
  config:
    activate:
      on-profile: dev #開發(fā)環(huán)境

3)在 application-test.yml 中,指定測試環(huán)境端口號為 “8082”,上下文路徑為“/in-test”,配置如下。

#測試環(huán)境配置
server:
  port: 8082 #測試環(huán)境端口 8082
  servlet:
    context-path: /in-test #測試環(huán)境上下文路徑 /in-test
spring:
  config:
    activate:
      on-profile: test

4)在 application-prod.yml 中,指定生產(chǎn)環(huán)境端口號為 “8083”,上下文路徑為“/in-prod”,配置如下。

#生產(chǎn)環(huán)境配置
server:
  port: 8083 #端口號
  servlet:
    context-path: /in-prod #上下文路徑
spring:
  config:
    activate:
      on-profile: prod

2、執(zhí)行以下 mvn 命令,將 mybootdemo 打包成 JAR,并將該 JAR 包移動到本次磁盤的某個目錄下(例如 mySpringBoot 目錄)。

mvn clean package

3、在 JAR 包所在目錄下創(chuàng)建 application.yml ,并設(shè)置上下文路徑為“/out-default”,并激活生產(chǎn)環(huán)境(prod)Profile。

#JAR 包外默認配置
server:
  servlet:
    context-path: /out-default
#切換配置
spring:
  profiles:
    active: prod #激活開發(fā)環(huán)境配置

打開命令行窗口,跳轉(zhuǎn)到 mySpringBoot 目錄下,執(zhí)行以下命令啟動 Spring Boot。

java -jar mybootdemo-0.0.1-SNAPSHOT.jar

啟動結(jié)果如下圖。

三、示例分析

Spring Boot 在啟動時會加載全部的 5 個配置文件,其中位于 JAR 包外的 application.yml 優(yōu)先級最高;

在 JAR 包外的 application.yml 中,配置激活了生產(chǎn)環(huán)境(prod)Profile,即 JAR 包內(nèi)部的 application-prod.yml 生效。此時,該項目中的配置文件優(yōu)先級順序為:JAR 包外 3. application.yml >

  • JAR 包內(nèi) application-prod.yml >JAR 包內(nèi)其他配置文件; application-prod.yml的配置內(nèi)容會覆蓋 JAR包內(nèi)所有其他配置文件的配置內(nèi)容,即端口號(port)為“8083”,上下文路徑(context-path)為“/in-prod”;
  • JAR 包內(nèi)的 application-prod.yml 中的上下文路徑會被 JAR 包外的 application.yml 覆蓋為“/out-default”;
  • JAR 包內(nèi)的 application-prod.yml 與 JAR 包外的 application.yml,形成互補配置,即,端口號為“8083”,上下文路徑為“/out-default”。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java實現(xiàn)文件拷貝的七種方式

    java實現(xiàn)文件拷貝的七種方式

    這篇文章主要介紹了java實現(xiàn)文件拷貝的七種方式,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2020-02-02
  • SpringBoot3結(jié)合gRpc實現(xiàn)遠程服務(wù)調(diào)用的流程步驟

    SpringBoot3結(jié)合gRpc實現(xiàn)遠程服務(wù)調(diào)用的流程步驟

    gRPC是一個現(xiàn)代開源高性能遠程過程調(diào)用(RPC)框架,可以在任何環(huán)境中運行,它由Google開發(fā),旨在幫助開發(fā)人員更輕松地構(gòu)建分布式應(yīng)用,特別是當代碼可能在不同地方運行的時候,本文介紹了SpringBoot3結(jié)合gRpc實現(xiàn)遠程服務(wù)調(diào)用的流程步驟,需要的朋友可以參考下
    2024-07-07
  • SpringBoot整合MOTT動態(tài)讀取數(shù)據(jù)庫連接信息并連接MQTT服務(wù)端

    SpringBoot整合MOTT動態(tài)讀取數(shù)據(jù)庫連接信息并連接MQTT服務(wù)端

    MQTT是一種輕量級的消息傳輸協(xié)議(Message Queuing Telemetry Transport),旨在實現(xiàn)設(shè)備之間的低帶寬和高延遲的通信,本文給大家介紹了SpringBoot整合MOTT動態(tài)讀取數(shù)據(jù)庫連接信息并連接MQTT服務(wù)端,需要的朋友可以參考下
    2024-04-04
  • 深入講解Java中的多態(tài)和抽象類

    深入講解Java中的多態(tài)和抽象類

    這篇文章主要介紹了深入講解Java中的多態(tài)和抽象類,有時候,設(shè)計一個數(shù)組或方法的參數(shù),返回值類型時,無法確定具體的類型,只能確定是某個系列的類型,這時就引入了多態(tài),需要的朋友可以參考下
    2023-08-08
  • IDEA配置SpringBoot熱啟動,以及熱啟動失效問題

    IDEA配置SpringBoot熱啟動,以及熱啟動失效問題

    這篇文章主要介紹了IDEA配置SpringBoot熱啟動,以及熱啟動失效問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Java簡單工廠和工廠方法模式詳細解析

    Java簡單工廠和工廠方法模式詳細解析

    這篇文章主要介紹了Java簡單工廠和工廠方法模式詳細解析,簡單工廠模式屬于類的創(chuàng)新型模式,又叫靜態(tài)工廠方法模式是通過專門定義一個類來負責創(chuàng)建其他類的實例,被創(chuàng)建的實例通常都具有共同的父類,需要的朋友可以參考下
    2023-12-12
  • Java四種遍歷Map的方法

    Java四種遍歷Map的方法

    今天小編就為大家分享一篇關(guān)于Java四種遍歷Map的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Eclipse+Java+Swing+Mysql實現(xiàn)工資管理系統(tǒng)

    Eclipse+Java+Swing+Mysql實現(xiàn)工資管理系統(tǒng)

    這篇文章主要介紹了Eclipse+Java+Swing+Mysql實現(xiàn)工資管理系統(tǒng),對正在工作或者學(xué)習的你有一定的參考價值,需要的朋友可以參考一下
    2022-01-01
  • SpringBoot中Token登錄授權(quán)、續(xù)期和主動終止的方案流程分析

    SpringBoot中Token登錄授權(quán)、續(xù)期和主動終止的方案流程分析

    SpringBoot項目中,基于Token的登錄授權(quán)方案主要有兩種:利用Session/Cookie和JWT,Cookie/Session方案有狀態(tài),不適合分布式架構(gòu),而JWT雖無狀態(tài),但存在過期時間不可強制失效、一次性等缺點,本文介紹SpringBoot中Token登錄授權(quán)、續(xù)期和主動終止的方案,感興趣的朋友一起看看吧
    2024-09-09
  • springboot如何使用yml文件方式配置shardingsphere

    springboot如何使用yml文件方式配置shardingsphere

    這篇文章主要介紹了springboot如何使用yml文件方式配置shardingsphere問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09

最新評論

泉州市| 南澳县| 陆丰市| 嘉义市| 于都县| 渑池县| 宾阳县| 桐梓县| 柞水县| 西吉县| 清涧县| 六安市| 扬州市| 定远县| 涡阳县| 四平市| 宁化县| 东山县| 集安市| 延庆县| 理塘县| 天门市| 平度市| 苏尼特右旗| 大城县| 大厂| 拉萨市| 兴海县| 大洼县| 镇巴县| 寿阳县| 安多县| 汤阴县| 侯马市| 资源县| 通辽市| 枣阳市| 和政县| 衡阳市| 扶余县| 腾冲县|