最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot解析指定Yaml配置文件的實(shí)現(xiàn)過程

 更新時間:2023年03月22日 15:49:42   作者:叫我二蛋  
這篇文章主要介紹了SpringBoot解析指定Yaml配置文件,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

在這里插入圖片描述

下面還有投票,幫忙投個票??

前言

最近在看某個開源項(xiàng)目代碼并準(zhǔn)備參與其中,代碼過了一遍后發(fā)現(xiàn)多個自定義的配置文件用來裝載業(yè)務(wù)配置代替數(shù)據(jù)庫查詢,直接響應(yīng)給前端,這里簡單記錄一下實(shí)現(xiàn)過程。

我們通常在SpringBoot項(xiàng)目中用配置文件屬性時使用@ConfigurationProperties或@Value默認(rèn)配置文件的屬性值,也就是application.yml或者application.properties文件中的屬性值。

但是不能全都往默認(rèn)配置文件里堆的,本文利用@PropertySource和@ConfigurationProperties注解引用其它配置文件的屬性值。

1、自定義配置文件

在resources下創(chuàng)建my.yaml文件,“-”用來表示數(shù)組類型,一定要注意空格。

my:
  contents:
    - id: 12121
      name: nadasd
    - id: 3333
      name: vfffff

2、配置對象類

創(chuàng)建配置類對象,在類上添加@Component、@PropertySource、@ConfigurationProperties注解。

@Component是將該類交由spring管理,@PropertySource用來指定配置文件及解析Yaml格式,@ConfigurationProperties是將解析后的配置文件屬性自動注入該類的屬性。

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

@Component
@PropertySource(value = "classpath:my.yaml", factory = YamlPropertiesSourceFactory.class)
@ConfigurationProperties(prefix = "my")
public class MyProperties {

    private List<content> contents = new ArrayList<>();

    public List<content> getContents() {
        return contents;
    }

    public void setContents(List<content> contents) {
        this.contents = contents;
    }


}

class content {
    private String id;

    private String name;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

@PropertySource注解是Spring用于加載配置文件,@PropertySource屬性如下:

  • name:默認(rèn)為空,不指定Spring自動生成
  • value:配置文件
  • ignoreResourceNotFound:沒有找到配置文件是否忽略,默認(rèn)false,4.0版本加入
  • encoding:配置文件編碼格式,默認(rèn)UTF-8 4.3版本才加入
  • factory:配置文件解析工廠,默認(rèn):PropertySourceFactory.class 4.3版本才加入,如果是之前的版本就需要手動注入配置文件解析Bean

Spring Boot 默認(rèn)不支持@PropertySource讀取yaml 文件,需要自定義PropertySourceFactory進(jìn)行解析。

3、YamlPropertiesSourceFactory

創(chuàng)建YamlPropertiesSourceFactory類用來解析Yaml格式的文件。

import org.springframework.boot.env.YamlPropertySourceLoader;
import org.springframework.core.env.PropertySource;
import org.springframework.core.io.support.EncodedResource;
import org.springframework.core.io.support.PropertySourceFactory;

import java.io.IOException;
import java.util.List;
import java.util.Optional;

public class YamlPropertiesSourceFactory implements PropertySourceFactory {

    @Override
    public PropertySource<?> createPropertySource(String name, EncodedResource resource) throws IOException {
        String resourceName = Optional.ofNullable(name).orElse(resource.getResource().getFilename());
        List<PropertySource<?>> yamlSources = new YamlPropertySourceLoader().load(resourceName, resource.getResource());
        return yamlSources.get(0);
    }

}

到此這篇關(guān)于SpringBoot解析指定Yaml配置文件的實(shí)現(xiàn)過程的文章就介紹到這了,更多相關(guān)SpringBoot解析Yaml配置文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot自動配置深入探究實(shí)現(xiàn)原理

    SpringBoot自動配置深入探究實(shí)現(xiàn)原理

    在springboot的啟動類中可以看到@SpringBootApplication注解,它是SpringBoot的核心注解,也是一個組合注解。其中@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan三個注解尤為重要。今天我們就來淺析這三個注解的含義
    2022-08-08
  • idea創(chuàng)建的idea項(xiàng)目時springframework出現(xiàn)紅色的原因和解決方法

    idea創(chuàng)建的idea項(xiàng)目時springframework出現(xiàn)紅色的原因和解決方法

    當(dāng)使用 IntelliJ IDEA 創(chuàng)建 Spring Framework 項(xiàng)目時,springframework 出現(xiàn)紅色可能是因?yàn)橄嚓P(guān)的 Spring Framework 依賴沒有正確加載或項(xiàng)目的配置有問題,本文給大家介紹了一些常見的原因和解決方法,需要的朋友可以參考下
    2023-09-09
  • Maven在Java8下如何忽略Javadoc的編譯錯誤詳解

    Maven在Java8下如何忽略Javadoc的編譯錯誤詳解

    這篇文章主要給大家介紹了關(guān)于Maven在Java8下如何忽略Javadoc的編譯錯誤的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • 通過String.intern()方法淺談堆中常量池

    通過String.intern()方法淺談堆中常量池

    這篇文章主要介紹了通過String.intern()方法淺談堆中常量池,在JDK7之前,字符串常量是存在永久帶Perm 區(qū)的,JDK7開始在將常量池遷移到堆中,這個變化也導(dǎo)致了String的新特性,下面我們慢慢進(jìn)行介紹。,需要的朋友可以參考下
    2019-06-06
  • SpringBoot中整合MyBatis-Plus-Join使用聯(lián)表查詢的實(shí)現(xiàn)

    SpringBoot中整合MyBatis-Plus-Join使用聯(lián)表查詢的實(shí)現(xiàn)

    本文主要介紹了SpringBoot中整合MyBatis-Plus-Join使用聯(lián)表查詢的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Java如何判斷一個url是否有效

    Java如何判斷一個url是否有效

    URL類提供了一個openConnection()方法,可以打開一個連接并返回一個URLConnection對象,該對象可以用來檢查連接是否有效,這篇文章主要介紹了Java判斷一個url是否有效,需要的朋友可以參考下
    2023-09-09
  • Java for循環(huán)詳解

    Java for循環(huán)詳解

    這篇文章主要介紹了Java for循環(huán)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Java+Selenium設(shè)置元素等待的方法詳解

    Java+Selenium設(shè)置元素等待的方法詳解

    本文主要介紹如何使用java代碼利用Selenium操作瀏覽器,某些網(wǎng)頁元素加載慢,如何操作元素就會把找不到元素的異常,此時需要設(shè)置元素等待,等待元素加載完,再操作,感興趣的可以了解一下
    2023-01-01
  • Java8新特性時間日期庫DateTime API及示例詳解

    Java8新特性時間日期庫DateTime API及示例詳解

    這篇文章主要介紹了Java8新特性時間日期庫DateTime API及示例詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Springboot中使用攔截器、過濾器、監(jiān)聽器的流程分析

    Springboot中使用攔截器、過濾器、監(jiān)聽器的流程分析

    Javaweb三大組件:servlet、Filter(過濾器)、?Listener(監(jiān)聽器),這篇文章主要介紹了Springboot中使用攔截器、過濾器、監(jiān)聽器的流程分析,感興趣的朋友跟隨小編一起看看吧
    2023-12-12

最新評論

云阳县| 九台市| 蛟河市| 岱山县| 边坝县| 通渭县| 南江县| 肥西县| 敦煌市| 长寿区| 廊坊市| 龙里县| 乐陵市| 仲巴县| 凌源市| 阿图什市| 盐源县| 芦溪县| 舟曲县| 民县| 额尔古纳市| 咸丰县| 本溪| 西藏| 张掖市| 时尚| 乐清市| 密云县| 滨州市| 闻喜县| 昔阳县| 雷山县| 南雄市| 宁陵县| 康平县| 临汾市| 防城港市| 黔江区| 武乡县| 名山县| 潜山县|