關于SpringBoot配置項的優(yōu)先級,不再有配置不生效的問題
優(yōu)先級原理介紹
下表中各種配置的優(yōu)先級,序號越小優(yōu)先級越高。
優(yōu)先級越高的意思就是:spring 按照序號的順序,由小到大到各種源頭查找配置項,找到了,就不繼續(xù)找后面的源了。
舉例說明:
- 當spring.profiles.active=dev時候,
- 源代碼resources目錄下有兩個配置文件:application.properties 和 application-dev.properties
按照下表規(guī)則:
- application-dev.properties 優(yōu)先級為7
- application.properties 優(yōu)先級為9
- application-dev.properties 和 application.properties 同時配置了jdbc相關配置,那么生效的是 application-dev.properties
優(yōu)先級順序
| 優(yōu)先級 | 配置項說明 | 使用說明 |
| 1 | java啟動命令行參數(shù) | java -jar xxx.jar --key=value |
| 2 | 在J2EE容器里面配配置 | J2EE 容器屬于古老過時技術,使用復雜,后面再專題介紹 |
| 3 | java 系統(tǒng)屬性 (System.getProperties()) | java -Dkey=value -jar your-application.jar 注意點: -Dkey=value 等號左右不能有空格 |
| 4 | 操作系統(tǒng)環(huán)境變量 | 大家經(jīng)常配置系統(tǒng)環(huán)境變量,不做解釋 |
| 5 | Spring 內(nèi)置隨機變量 | 主要測試場景,比如你想生成一個int隨機數(shù),直接用即可: @Value("${random.int}") private int random; 如果你的啟動命令行也配置了 random.int,那么啟動命令行優(yōu)先級高 java -jar xxx.jar --random.int=100 |
| 6 | jar包外部 application-{profile}.properties | java -jar your-springboot-app.jar --spring.config.location=file:/config/application-dev.properties |
| 7 | jar包內(nèi)部 application-{profile}.properties | 項目源代碼src/main/resources對應的配置文件,會自動打包到jar里面 |
| 8 | jar包外部 application.properties | 和6類似,只是文件名是固定的 |
| 9 | jar包內(nèi)部 application.properties | 和7類似,只是文件名是固定的 |
| 10 | @PropertySource annotations on your @Configuration classes | 需要自己實現(xiàn)配置項獲取邏輯,spring預留的接口,比如apollo配置服務,這種中間件都是通過這個接口實現(xiàn)從遠程服務器加載配置項的 |
| 11 | SpringApplication.setDefaultProperties | 調(diào)用spring接口代碼里面硬編碼 |
JNDI簡單介紹
需要在J2EE容器里面配置,以Tomcat為例,需要在tomcat 的Server.xml Context.xml 中配置JNDI, 然后使用的地方jndi-lookup , JNDI是比較古老的技術,現(xiàn)在基本上廢棄了。


Web.xml 中查找,從容器中查找變量,將變量暴漏給當前應用, 當前應用就直接可以使用了。

總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
使用PoolingHttpClientConnectionManager實現(xiàn)http連接池過程
文章主要介紹了`PoolingHttpClientConnectionManager`實現(xiàn)HTTP連接池的原理、依賴實現(xiàn)、定時回收鏈接的方法,以及如何正確釋放連接以復用2025-11-11
SpringCloud Config使用本地倉庫及map注入
這篇文章主要介紹了SpringCloud Config使用本地倉庫及map注入,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-09-09
Java 內(nèi)存模型中的happen-before關系詳解
這篇文章主要為大家介紹了Java 內(nèi)存模型中的happen-before關系示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-10-10
Java調(diào)用echarts提供的地圖壓縮方法來壓縮地圖
今天小編就為大家分享一篇關于Java調(diào)用echarts提供的地圖壓縮方法來壓縮地圖,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12

