SpringBoot加載不出來application.yml文件的解決方法
摘要
記錄一次SpringBoot加載不出來application.yml文件的問題解決過程
問題
配置了application.yml文件,但是映射到properties bean的時候失敗
@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; } }
問題分析
分析1:首先懷疑是application.yml文件沒有打包到classpath下,這個是最直接的原因,使用的是maven 構建工具
在target 目錄下面生成的war中看到了這個文件,排除了這個原因
分析2: DemoProperties文件配置不對
檢查發(fā)現(xiàn),@ConfigurationProperties 注解有,setter,getter方法有。不放心debug了一下
發(fā)現(xiàn)propertySource中沒有application.yml文件的值,一個正常的application.yml文件加載情況應該是這樣的
分析3:
這時候根據(jù)常識已經(jīng)找不出問題了,只能看源碼了
根據(jù)時序圖可以大致猜測問題發(fā)生在load階段,即加載properties文件階段。PropertySourceLoader接口中l(wèi)oad方法實際讀取properties文件。這個接口有兩個實現(xiàn)PropertiesPropertySourceLoader,解析后綴名為"properties", “xml"的application配置文件YamlPropertySourceLoader解析后綴名為"yml”, "yaml"的application配置文件
看下YamlPropertySourceLoader的實現(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; }
我的天,一眼看出來可能會有問題,判斷org.yaml.snakeyaml.Yaml類是否存在,否則返回null
解決
pom文件中加上snakeyaml依賴
<dependency> <groupId>org.yaml</groupId> <artifactId>snakeyaml</artifactId> <version>${snakeyaml.version}</version> </dependency>
到此這篇關于SpringBoot加載不出來application.yml文件的解決方法的文章就介紹到這了,更多相關SpringBoot加載不出來application.yml內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- springboot無法加載yml配置文件的解決方案
- SpringBoot使用不同環(huán)境動態(tài)加載不同配置文件
- SpringBoot配置文件啟動加載順序的方法步驟
- SpringBoot配置文件的優(yōu)先級順序、加載順序、bootstrap.yml與application.yml區(qū)別及說明
- SpringBoot項目部署時application.yml文件的加載優(yōu)先級和啟動腳本問題
- SpringBoot中的配置文件加載優(yōu)先級詳解
- SpringBoot項目加載配置文件的6種方式小結(jié)
- SpringBoot實現(xiàn)配置文件自動加載和刷新的示例詳解
- SpringBoot的配置文件application.yml及加載順序詳解
- springboot加載配值文件的實現(xiàn)步驟
相關文章
MyBatis中的XML實現(xiàn)和動態(tài)SQL實現(xiàn)示例詳解
這篇文章主要介紹了MyBatis中的XML實現(xiàn)和動態(tài)SQL實現(xiàn),我們可以將XML中重復出現(xiàn)的內(nèi)容提取出來放到sql標簽中,當需要用到sql標簽中的內(nèi)容時,用include標簽將sql標簽中的內(nèi)容引進來即可,感興趣的朋友跟隨小編一起看看吧2024-02-02Intellij IDEA 添加jar包的三種方式(小結(jié))
這篇文章主要介紹了Intellij IDEA 添加jar包的三種方式(小結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08SpringBoot調(diào)用第三方WebService接口的操作技巧(.wsdl與.asmx類型)
這篇文章主要介紹了SpringBoot調(diào)第三方WebService接口的操作代碼(.wsdl與.asmx類型 ),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08淺談spring的重試機制無效@Retryable@EnableRetry
這篇文章主要介紹了淺談spring的重試機制無效@Retryable@EnableRetry,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09springsecurity實現(xiàn)登錄驗證以及根據(jù)用戶身份跳轉(zhuǎn)不同頁面
Spring?Security是一種基于Spring框架的安全技術,用于實現(xiàn)身份驗證和訪問控制,本文介紹了如何使用Spring?Security,結(jié)合session和redis來存儲用戶信息,并通過編寫特定的登錄處理類和Web配置,實現(xiàn)用戶登錄和注銷功能2024-09-09