SpringBoot加載不出來(lái)application.yml文件的解決方法
摘要
記錄一次SpringBoot加載不出來(lái)application.yml文件的問(wèn)題解決過(guò)程
問(wèn)題
配置了application.yml文件,但是映射到properties bean的時(shí)候失敗
@ConfigurationProperties(
prefix = "com.fs"
)
public class DemoProperties {
private String serviceName;
public DemoProperties() {
}
public String getServiceName() {
return this.serviceName;
}
public void setServiceName(String serviceName) {
this.serviceName = serviceName;
}
}
問(wèn)題分析
分析1:首先懷疑是application.yml文件沒(méi)有打包到classpath下,這個(gè)是最直接的原因,使用的是maven 構(gòu)建工具
在target 目錄下面生成的war中看到了這個(gè)文件,排除了這個(gè)原因
分析2: DemoProperties文件配置不對(duì)
檢查發(fā)現(xiàn),@ConfigurationProperties 注解有,setter,getter方法有。不放心debug了一下

發(fā)現(xiàn)propertySource中沒(méi)有application.yml文件的值,一個(gè)正常的application.yml文件加載情況應(yīng)該是這樣的

分析3:
這時(shí)候根據(jù)常識(shí)已經(jīng)找不出問(wèn)題了,只能看源碼了
根據(jù)時(shí)序圖可以大致猜測(cè)問(wèn)題發(fā)生在load階段,即加載properties文件階段。PropertySourceLoader接口中l(wèi)oad方法實(shí)際讀取properties文件。這個(gè)接口有兩個(gè)實(shí)現(xiàn)PropertiesPropertySourceLoader,解析后綴名為"properties", “xml"的application配置文件YamlPropertySourceLoader解析后綴名為"yml”, "yaml"的application配置文件
看下YamlPropertySourceLoader的實(shí)現(xiàn)
public PropertySource<?> load(String name, Resource resource, String profile) throws IOException {
if(ClassUtils.isPresent("org.yaml.snakeyaml.Yaml", (ClassLoader)null)) {
YamlPropertySourceLoader.Processor processor = new YamlPropertySourceLoader.Processor(resource, profile);
Map<String, Object> source = processor.process();
if(!source.isEmpty()) {
return new MapPropertySource(name, source);
}
}
return null;
}
我的天,一眼看出來(lái)可能會(huì)有問(wèn)題,判斷org.yaml.snakeyaml.Yaml類是否存在,否則返回null
解決
pom文件中加上snakeyaml依賴
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>${snakeyaml.version}</version>
</dependency>
到此這篇關(guān)于SpringBoot加載不出來(lái)application.yml文件的解決方法的文章就介紹到這了,更多相關(guān)SpringBoot加載不出來(lái)application.yml內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- springboot無(wú)法加載yml配置文件的解決方案
- SpringBoot使用不同環(huán)境動(dòng)態(tài)加載不同配置文件
- SpringBoot配置文件啟動(dòng)加載順序的方法步驟
- SpringBoot配置文件的優(yōu)先級(jí)順序、加載順序、bootstrap.yml與application.yml區(qū)別及說(shuō)明
- SpringBoot項(xiàng)目部署時(shí)application.yml文件的加載優(yōu)先級(jí)和啟動(dòng)腳本問(wèn)題
- SpringBoot中的配置文件加載優(yōu)先級(jí)詳解
- SpringBoot項(xiàng)目加載配置文件的6種方式小結(jié)
- SpringBoot實(shí)現(xiàn)配置文件自動(dòng)加載和刷新的示例詳解
- SpringBoot的配置文件application.yml及加載順序詳解
- springboot加載配值文件的實(shí)現(xiàn)步驟
相關(guān)文章
java設(shè)計(jì)模式-單例模式實(shí)現(xiàn)方法詳解
單例模式,屬于創(chuàng)建類型的一種常用的軟件設(shè)計(jì)模式。通過(guò)單例模式的方法創(chuàng)建的類在當(dāng)前進(jìn)程中只有一個(gè)實(shí)例(根據(jù)需要,也有可能一個(gè)線程中屬于單例2021-07-07
Java泛型之協(xié)變與逆變及extends與super選擇
這篇文章主要介紹了Java泛型之協(xié)變與逆變及extends與super選擇,文章圍繞主題內(nèi)容展開詳細(xì)內(nèi)容介紹,需要的小伙伴可以參考一下2022-05-05
Java非法字符: ‘\ufeff‘問(wèn)題及說(shuō)明
這篇文章主要介紹了Java非法字符: ‘\ufeff‘問(wèn)題及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
Spring?Boot項(xiàng)目獲取resources目錄下文件并返回給前端的方案
我們?cè)陧?xiàng)目中經(jīng)常碰到需要讀取固定文件的場(chǎng)景,如模板文件,一般做法是將文件放在resources目錄下,程序通過(guò)多種方式可以順利讀取文件,這篇文章主要給大家介紹了關(guān)于Spring?Boot項(xiàng)目獲取resources目錄下文件并返回給前端的相關(guān)資料,需要的朋友可以參考下2024-07-07
Maven Spring jar包啟動(dòng)報(bào)錯(cuò)問(wèn)題解決方案
maven 編譯jar包,放在linux服務(wù)器啟動(dòng)不起來(lái),提示:xxxx-0.0.1-SNAPSHOT.jar中沒(méi)有主清單屬性,接下來(lái)通過(guò)本文給大家分享問(wèn)題原因及解決方案,感興趣的朋友跟隨小編一起看看吧2023-10-10
Java 實(shí)用工具類Spring 的 StopWatch常用方法
StopWatch 是 Spring 框架中極其實(shí)用的開發(fā)輔助工具,它為性能分析和調(diào)試提供了輕量但強(qiáng)大的能力,使用簡(jiǎn)單、無(wú)需復(fù)雜配置,本文給大家介紹Java 實(shí)用工具類Spring 的 StopWatch常用方法,感興趣的朋友一起看看吧2025-04-04
SpringBoot中實(shí)現(xiàn)分布式的Session共享的詳細(xì)教程
這篇文章主要介紹了SpringBoot中實(shí)現(xiàn)分布式的Session共享,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06
對(duì)比Java講解Kotlin中?.與!!.的區(qū)別
這篇文章主要給大家介紹了關(guān)于對(duì)比Java,實(shí)例講解Kotlin中?.與!!.的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用kotlin具有一定參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-06-06

