Springboot的配置文件及其優(yōu)先級(jí)說明
配置文件
內(nèi)置配置文件
配置文件的作用:修改SpringBoot自動(dòng)配置的默認(rèn)值;SpringBoot在底層都給我們自動(dòng)配置好;SpringBoot使用一個(gè)全局的配置文件,配置文件名是固定的:
- application.properties
- application.yml
以上兩個(gè)任意一個(gè)都可以,也可以組合起來使用
- 以前的配置文件:大多都使用的是 xxxx.xml文件;
- YAML:以數(shù)據(jù)為中心,比json、xml等更適合做配置文件;
yml與properties的比較
application.properties與application.yml的比較:

我們會(huì)發(fā)現(xiàn)properties文件如果是要配置同一層級(jí)下的屬性需要把它的前綴全部寫上,而yml文件則是跟文件的層級(jí)結(jié)構(gòu)相似,而且分層清晰,所有我們一般選擇使用yml文件。
優(yōu)先級(jí)比較
雖然說application.yml與application.properties都是springboot的配置文件,但是他們也存在一個(gè)優(yōu)先級(jí):properties的優(yōu)先級(jí)高于yml文件。
接下來就是驗(yàn)證這個(gè)優(yōu)先級(jí) :
首先給yml和properties文件設(shè)置不同的port,然后啟動(dòng)項(xiàng)目

項(xiàng)目啟動(dòng)之后,我們從日志中可以看到端口號(hào)時(shí)8081,時(shí)properties文件中配置的,因此驗(yàn)證了properties文件的優(yōu)先級(jí)。

外置配置文件
首先,再我們的項(xiàng)目中我們導(dǎo)入了一個(gè)插件,可以將應(yīng)用打包成一個(gè)可執(zhí)行的jar包,無論在哪都可以使用java -jar進(jìn)行運(yùn)行。因此我們可以把打包好的jar包拿出來,放到一個(gè)文件夾中,然后去驗(yàn)證其外置的配置文件。
插件如下:

打包的時(shí)候我們先需要依次運(yùn)行clean和package指令。

打包完成之后我們可以進(jìn)入到項(xiàng)目對(duì)應(yīng)的target文件夾下邊,結(jié)構(gòu)如下:

我們可以把jar包復(fù)制一份,然后放到一個(gè)新的文件夾中,并在文件夾中新建一個(gè)application.yml文件,重新制定port為8085,然后使用java -jar運(yùn)行程序。

java -jar redisdemo-0.0.1-SNAPSHOT.jar

然后我們?cè)诋?dāng)前目錄下新建一個(gè)config文件,config文件中新建一個(gè)application.yml文件,并設(shè)置port為8090,然后再次啟動(dòng)項(xiàng)目,我們會(huì)發(fā)現(xiàn)端口號(hào)變成了8090。
因此我們得到一個(gè)優(yōu)先級(jí)的比較:
外置的config中的配置文件>外置的配置文件>內(nèi)置的application.properties>內(nèi)置application.yml
springboot讀取配置文件
我們也可以在配置文件中自定義屬性的值,然后可以使用@Value來讀取,例如:
在yml文件中添加:
api: name: zhangsan password: 123456
新建ConfigController文件:
package com.example.redisdemo.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ConfigController {
// :后邊的是默認(rèn)值,如果找不到api.name就使用1,并且不會(huì)拋出異常
@Value("${api.name:1}")
private String name;
@Value("${api.password:2}")
private String password;
@GetMapping("/config")
public void config(){
System.out.println(name);
System.out.println(password);
}
}
然后啟動(dòng)項(xiàng)目,訪問config進(jìn)行驗(yàn)證:

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- SpringBoot配置文件優(yōu)先級(jí)用法及解讀
- Springboot配置文件Nacos和環(huán)境變量?jī)?yōu)先級(jí)詳解
- SpringBoot配置文件的優(yōu)先級(jí)順序、加載順序、bootstrap.yml與application.yml區(qū)別及說明
- SpringBoot中的配置文件加載優(yōu)先級(jí)詳解
- 關(guān)于SpringBoot配置文件加載位置的優(yōu)先級(jí)
- springBoot項(xiàng)目配置文件加載優(yōu)先級(jí)及同配置覆蓋問題詳解
- 一問詳解SpringBoot配置文件優(yōu)先級(jí)
- Java springboot探究配置文件優(yōu)先級(jí)
- Java springboot 配置文件與多環(huán)境配置與運(yùn)行優(yōu)先級(jí)
相關(guān)文章
SpringBoot 普通類調(diào)用Bean對(duì)象的一種方式推薦
這篇文章主要介紹了SpringBoot 普通類調(diào)用Bean對(duì)象的一種方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
Java 中的進(jìn)制轉(zhuǎn)換與編碼機(jī)制詳解
在 Java 編程領(lǐng)域,進(jìn)制轉(zhuǎn)換是一項(xiàng)極為基礎(chǔ)且重要的技能,下面給大家介紹Java 中的進(jìn)制轉(zhuǎn)換與編碼機(jī)制,感興趣的朋友一起看看吧2025-04-04
Win10 Java jdk14.0.2安裝及環(huán)境變量配置詳細(xì)教程
這篇文章主要介紹了Win10 Java jdk14.0.2安裝及環(huán)境變量配置,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08
java程序運(yùn)行時(shí)內(nèi)存分配詳解
這篇文章主要介紹了java程序運(yùn)行時(shí)內(nèi)存分配詳解 ,需要的朋友可以參考下2016-07-07
SpringMvc導(dǎo)出Excel實(shí)例代碼
本篇文章主要介紹了SpringMvc導(dǎo)出Excel實(shí)例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01
java調(diào)用FFmpeg實(shí)現(xiàn)視屏壓縮功能的詳細(xì)步驟
這篇文章主要介紹了java調(diào)用FFmpeg實(shí)現(xiàn)視屏壓縮功能,本文簡(jiǎn)單的展示了java調(diào)用FFmpeg命令實(shí)現(xiàn)視屏的壓縮的詳細(xì)步驟,需要的朋友可以參考下2021-09-09

