SpringBoot配置文件的加載優先級順序

2021-01-10 計算機java編程

01application.properties加載

Spring Boot啟動會掃描以下位置的application.properties或者application.yml文件作為Spring Boot的默認配置文件

file:/config/file:/classpath:/config/classpath:/以上順序按照優先級從高到低的順序,所有位置的文件都會被加載,高優先級的配置內容會覆蓋低優先級配置的內容,其中配置文件中的內容是互補配置,即

存在相同的配置內容,高優先級的內容會覆蓋低優先級的內容存在不同的內容的時候,高優先級和低優先級的配置內容取併集我們也可以通過spring.config.location來改變默認的配置,具體做法就是項目打包好以後,我們可以使用命令行參數的形式,啟動項目的時候來指定配置文件的新位置,指定配置文件和默認加載的配置文件共同起作用稱為互補配置

java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --spring.config.location=D:/application.properties

02外部配置的加載順序

Spring Boot也可以從以下位置加載配置: 優先級從高到低順序,高優先級覆蓋低優先級,如有不同內容,高優先級和低優先級形成互補配置

命令行參數命令行參數的優先級是最高的,假定內部配置的最高優先級配置文件配置的啟動埠號是8081,啟動命令行參數如以下設置:

java -jar spring-boot-02-config-02.0.0.1-SNAPSHOT.jar --server.port=8089

那麼啟動的埠就改成了8089,命令行可以把項目的所有的配置選項全部都改掉

來自java:comp/env的JNDI屬性java系統屬性(System.getProperties())作業系統環境變量RandomValuePropertySource配置的random.*屬性值jar包外部的application-{profile}.properties或者application.yml(帶spring.profile)配置文件jar包內部的application-{profile}.properties或者application.yml(帶spring.profile)配置文件jar包外部的application.properties或者application.yml(不帶spring.profile)配置文件jar包內部的application.properties或者application.yml(不帶spring.profile)配置文件@Configuration註解類上的@PropertySource通過SpringApplication.setDefaultProperties指定的默認屬性看了以上的配置順序,下面來思考一個問題,如果我要配置的東西太多,而且項目已經打包,我命令行重新配置參數太麻煩,應該怎麼辦?

相關焦點

  • 全網最細緻的SpringBoot實戰教程,超適合新手小白入坑學習
    1.優先級spring boot啟動會掃描一下位置的application.properties或者application.yml文件作為Spring boot的默認配置文件file:./classpath:/config/classpath:/以上是按照優先級從高到低的順序,所有位置的文件都會被加載,實現互補配置,高優先級配置內容覆蓋低優先級配置內容我們可以通過spring.config.location來改變默認配置
  • pacebox-springboot 1.0.2 發布,新增 opentracing 埋點
    pacebox-springboot 融合封裝已發布,旨在提供快速開發腳手架、打造更好的開源生態環境。
  • 黑馬程式設計師:SpringBoot教程,SpringBoot高級之原理分析
    導入Jedis坐標後,加載該Bean,沒導入,則不加載。2. 將類的判斷定義為動態的。判斷哪個字節碼文件存在可以動態指定。User類使用@ConditionalOnProperty註解,name是itcast,value是itheima修改配置文件application.properties,增加itcast=itheima測試加載User類
  • SpringBoot-Condition
    springboot中提供了一系列@Condition* 註解來處理有條件注入的情況。1. 說明Spring4中增加了@Condition annotation, 使用該Annotation之後,在做依賴注入的時候,會檢測是否滿足某個條件來決定是否注入某個類。
  • 前端——關於css樣式運行的優先級問題
    css的運行:在相同的選擇器前提下,我們引入css文件時:內聯樣式表>內部樣式表>外部鏈式表在優先級相同時,誰先加載就誰生效。例如,我們同時引入兩個外部樣式表:文件1,設置盒子背景為藍色文件2,設置背景為紅色
  • Nginx+SpringBoot實現負載均衡
    的項目地址: https://github.com/xuwujing/springBoot-study/tree/master/springboot-thymeleaf首先我們下載這個項目,輸入:mvn clean package 將項目進行打包為jar文件,然後將application.properties和此jar項目放在一個文件夾中,然後複製該文件夾
  • springboot整合mybatis實現配置多數據源
    前言:實際開發中,隨著業務的擴張,使用單一的資料庫顯然有點臃腫,不便管理,經常會實現將不同的業務模塊的數據表結構放在各自的資料庫中,下邊簡單實現sprongboot實現多數據源的配置。一 項目結構:二 涉及到的資料庫:三 springboot中的application.properties文件:本次demo簡單配置下兩個數據源為例。
  • springboot 讀取 yml 配置的幾種方式
    點擊上方藍色字體,選擇「標星公眾號」優質文章,第一時間送達  作者 |  西紅柿雞蛋面~來源 |  urlify.cn/qe6RZz76套java從入門到精通實戰課程分享前言: 在 springboot
  • SpringBoot開發常用的註解及作用
    隨著網際網路的快速發展,不斷的湧出新的技術,springboot是什麼呢?springboot它是spring開源組織下的子項目,主要是用來簡化spring的難度以及不足,節省程式設計師的繁重的配置,為程式設計師開發過程中各種啟動器。
  • ARM的分散加載文件(scatter)介紹
    分散加載文件(即scatter file 後綴為.scf)是一個文本文件,通過編寫一個分散加載文件來指定ARM連接器在生成映像文件時如何分配RO,RW,ZI等數據的存放地址。如果不用SCATTER文件指定,那麼ARM連接器會按照默認的方式來生成映像文件,一般情況下我們是不需要使用分散加載文件的。
  • Spring Boot 配置文件的多環境實現
    完成加載以後,spring會在環境environment環境中增加一個MapPropertySource的PropertySource項,裡面存放著屬性,這樣就可以注入對象了。使用如下:Loader是ConfigFileApplicationListener的一個內部類,其作用就是用來加載各種配置文件。我們看到,Loader類有一個關鍵的類屬性,propertySourceLoaders,它指向了spring.factories中配置的一系列屬性加載器。我們來看Loader中的一些關鍵方法。
  • pacebox-springboot 1.1.2 發布,java生態框架
    pacebox-springboot 融合封裝已發布,旨在提供快速開發腳手架、打造更好的開源生態環境。
  • Spring Boot 配置文件 bootstrap / application 到底有什麼區別?
    用過 Spring Boot 的都知道在 Spring Boot 中有以下兩種配置文件
  • springboot整合redis簡單案例
    前言:這裡簡單介紹下springboot整合redis(window版),以及簡單的測試demo。根據當前自己電腦的系統下載對應的redis版本,我這裡是以window版本作為測試的 demo。下載完直接解壓到自定義的目錄,如下:雙擊運行redis-server.exe,如下說明redis啟動成功:在創建的springboot項目的配置文件中,配置如下:創建配置類:
  • SpringBoot常見面試題
    SpringBoot的配置文件有哪些?要點:     SpringBoot默認讀取配置文件為application.properties或者是application.yml或者application.yaml(yaml/yml只是擴展名不同而已)。
  • pacebox-springboot 1.0.8 發布,java 生態框架
    pacebox-springboot 融合封裝已發布,旨在提供快速開發腳手架、打造更好的開源生態環境。
  • pacebox-springboot 2020.0.0.0 發布,java 生態框架
    pacebox-springboot 融合封裝已發布,旨在提供快速開發腳手架、打造更好的開源生態環境。希望有志同道合的朋友一起維護該軟體、打造一款快速應用開發級生態框架。
  • 記mybatis應用在springboot中的一次踩坑記錄
    有次從網上找了個springboot+mybatis+redis的web應用框架。簡單了解了下項目架構,就匆匆上手,照葫蘆畫瓢的做了個簡單的CRUD。看到項目中源作者在UserMapper.xml文件中,沒有定義user類型直接可以在resultType和parameterType中只用。
  • SpringBoot+Mybatis動態切換數據源
    1.2 配置文件先來看一下老項目中讀寫分離的配置文件,這裡對一些涉及到隱私的更換了點信息資料庫配置文件(jdbc.properties):#write主庫(讀寫) write.jdbc.driver=com.mysql.jdbc.Driver write.jdbc.url=jdbc:mysql
  • Mybatis【配置文件】
    映射文件配置文件和映射文件還有挺多的屬性我還沒有講的,現在就把它們一一補全在mapper.xml文件中配置很多的sql語句,執行每個sql語句時,封裝為MappedStatement對象,mapper.xml以statement為單位管理sql語句Statement的實際位置就等於namespace+StatementId