Springboot的配置文件及其優(yōu)先級(jí)說(shuō)明
配置文件
內(nèi)置配置文件
配置文件的作用:修改SpringBoot自動(dòng)配置的默認(rèn)值;SpringBoot在底層都給我們自動(dòng)配置好;SpringBoot使用一個(gè)全局的配置文件,配置文件名是固定的:
- application.properties
- application.yml
以上兩個(gè)任意一個(gè)都可以,也可以組合起來(lái)使用
- 以前的配置文件:大多都使用的是 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í)比較
雖然說(shuō)application.yml與application.properties都是springboot的配置文件,但是他們也存在一個(gè)優(yōu)先級(jí):properties的優(yōu)先級(jí)高于yml文件。
接下來(lái)就是驗(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包,無(wú)論在哪都可以使用java -jar進(jìn)行運(yùn)行。因此我們可以把打包好的jar包拿出來(lái),放到一個(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來(lái)讀取,例如:
在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)目,訪問(wèn)config進(jìn)行驗(yàn)證:

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MyBatis-Plus 邏輯刪除的實(shí)現(xiàn)示例
邏輯刪除通過(guò)標(biāo)記字段實(shí)現(xiàn)數(shù)據(jù)“假刪除”,既保障了數(shù)據(jù)安全,又簡(jiǎn)化了恢復(fù)操作,是核心業(yè)務(wù)數(shù)據(jù)的最佳刪除方案,下面就來(lái)介紹一下MyBatis-Plus邏輯刪除的實(shí)現(xiàn),感興趣的可以了解一下2026-01-01
SpringBoot項(xiàng)目中application.yml和bootstrap.yml文件的區(qū)別及說(shuō)明
`application.yml`和`bootstrap.yml`都是Spring Boot項(xiàng)目中的配置文件,但它們?cè)诩虞d時(shí)機(jī)、用途、優(yōu)先級(jí)、配置來(lái)源、適用場(chǎng)景和是否必須存在等方面存在區(qū)別2025-03-03
SpringBoot項(xiàng)目多模塊項(xiàng)目中父類與子類pom.xml的關(guān)聯(lián)問(wèn)題小結(jié)
這篇文章主要介紹了SpringBoot項(xiàng)目多模塊項(xiàng)目中父類與子類pom.xml的關(guān)聯(lián)問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2025-04-04
Maven項(xiàng)目執(zhí)行生命周期相關(guān)操作時(shí)出現(xiàn)錯(cuò)誤:does not match a
當(dāng)pom文件中的gav標(biāo)簽格式錯(cuò)誤,如出現(xiàn)中文或空格,會(huì)導(dǎo)致與有效的id模式不匹配錯(cuò)誤,gav標(biāo)簽應(yīng)僅包含數(shù)字、字母和下劃線,解決方法是修改標(biāo)簽中的中文為英文,刪除多余空格,并刷新pom文件,例如,將中文"測(cè)試"改為英文"test"2024-09-09
如何利用@PreAuthorize注解自定義權(quán)限校驗(yàn)
通過(guò)使用@PreAuthorize注解實(shí)現(xiàn)開放接口的權(quán)限校驗(yàn),具體步驟包括開啟全局方法安全、編寫自定義鑒權(quán)方法、創(chuàng)建自定義異常類、在統(tǒng)一異常處理類中捕獲異常并處理,最后在需要鑒權(quán)的接口上貼上注解2024-12-12
IntelliJ IDEA新版本中Maven子模塊不顯示的解決方案
在使用IntelliJ IDEA 2024版本開發(fā)Maven多模塊項(xiàng)目時(shí),我發(fā)現(xiàn)一個(gè)令人困惑的現(xiàn)象,父模塊的子模塊未在右側(cè) Maven 工具窗口中顯示,僅顯示父模塊名稱,而此前2021版本中,父模塊和子模塊均能正常顯示,所以本文給大家介紹了IntelliJ IDEA新版本中Maven子模塊不顯示的解決方案2025-05-05
SpringAI+Ollama本地模型實(shí)現(xiàn)快速對(duì)話的實(shí)戰(zhàn)指南
SpringAI是Spring官方推出的AI應(yīng)用開發(fā)框架,旨在統(tǒng)一封裝多種大模型,提供一套代碼無(wú)縫切換不同模型的功能,下面我們就來(lái)看看SpringAI如何結(jié)合Ollama實(shí)現(xiàn)快速對(duì)話功能吧2026-05-05
Idea中Java項(xiàng)目如何修改項(xiàng)目名
這篇文章主要介紹了Idea中Java項(xiàng)目如何修改項(xiàng)目名問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06

