欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot加載不出來application.yml文件的解決方法

 更新時間:2023年12月18日 10:40:03   作者:方丈的寺院  
這篇文章主要介紹了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ù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論