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

SpringBoot如何啟動自動加載自定義模塊yml文件(PropertySourceFactory)

 更新時間:2024年07月10日 09:00:27   作者:君哥聊編程  
這篇文章主要介紹了SpringBoot如何啟動自動加載自定義模塊yml文件(PropertySourceFactory),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

參考:https://deinum.biz/2018-07-04-PropertySource-with-yaml-files/

背景

自定義模塊時經(jīng)常會編寫當(dāng)前模塊的一些核心yml配置,如果要被Spring容器加載到通常的做法是將自定義模塊的yml命名為application-模塊名.yml,比如db模塊命名為application-db.yml,然后再在spring.profiles.include中引入該db,即可加載到子模塊配置(前提是maven構(gòu)建時能夠?qū)esources資源目錄編譯進去)。

上面說的這種限制有很多,子模塊對于父模塊是黑箱操作,我們無法得知有多少個子模塊要被include進來,而且前綴必須以application開頭。

今天我們來看另外一種更加靈活的方式,自定義名稱的yml直接在子模塊中加載,各位朋友繼續(xù)往下看PropertySourceFactory如何實現(xiàn)。

總結(jié)3步走

定義一個YamlPropertySourceFactory,實現(xiàn)PropertySourceFactory,重寫createPropertySource方法

將接口給過來的資源流文件使用加載到spring提供的YmlPropertiesFactorBean中,由該工廠Bean產(chǎn)出一個Properties對象

將生成的Properties對象傳入PropertiesPropertySource中產(chǎn)出一個PropertySource對象

import lombok.AllArgsConstructor;
import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
import org.springframework.core.env.PropertiesPropertySource;
import org.springframework.core.env.PropertySource;
import org.springframework.core.io.support.EncodedResource;
import org.springframework.core.io.support.PropertySourceFactory;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;

/**
 * @description:
 * @author: jianjun.ren
 * @date: Created in 2020/9/24 12:05
 */
@AllArgsConstructor
public class YamlPropertySourceFactory implements PropertySourceFactory {
	//這個方法有2個入?yún)?,分別為資源名稱和資源對象,這是第一步
    public PropertySource< ? > createPropertySource(String name, EncodedResource resource) throws IOException {
    
    	//這是第二步,根據(jù)流對象產(chǎn)出Properties對象
        Properties propertiesFromYaml = loadYamlIntoProperties(resource);
        String sourceName = name != null ? name : resource.getResource().getFilename();
        assert sourceName != null;
        
        //這是第三部,根據(jù)Properties對象,產(chǎn)出PropertySource對象,放入到Spring中
        return new PropertiesPropertySource(sourceName, propertiesFromYaml);
    }

    private Properties loadYamlIntoProperties(EncodedResource resource) throws FileNotFoundException {
        try {
            YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean();
            factory.setResources(resource.getResource());
            factory.afterPropertiesSet();
            return factory.getObject();
        } catch (IllegalStateException e) {
            Throwable cause = e.getCause();
            if (cause instanceof FileNotFoundException) {
                throw (FileNotFoundException) e.getCause();
            }
            throw e;
        }
    }
}

創(chuàng)建咱們是說完了,小伙伴有很多問號,怎么去使用呢?

接下來我們再看康康:

在任意一個@Configuration類中,你自己寫一個也可以,反正能夠被Spring所掃描的

加入下面這段代碼,其實就一行:

@Configuration
//這個地方的YamlPropertySourceFactory就是上面編寫的代碼類
@PropertySource(factory = YamlPropertySourceFactory.class, value = "classpath:xxx-xxx.yml")
public class XXXXConfiguration {
		
}

最后

好了到這里就結(jié)束了,去使用看看效果吧~

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring?Cloud?通過?Gateway?webflux實現(xiàn)網(wǎng)關(guān)異常處理

    Spring?Cloud?通過?Gateway?webflux實現(xiàn)網(wǎng)關(guān)異常處理

    在某一個服務(wù)中出現(xiàn)異常,通過@ControllerAdvice?+?@ExceptionHandler?統(tǒng)一異常處理,即使在微服務(wù)架構(gòu)中,也可以將上述統(tǒng)一異常處理放入到公共的微服務(wù)中,這樣哪一個微服務(wù)需要,直接引入模塊,本文重點介紹Spring?Cloud?通過?Gateway?webflux實現(xiàn)網(wǎng)關(guān)異常處理,一起看看吧
    2023-11-11
  • 關(guān)于List、Map、Stream初始化方式

    關(guān)于List、Map、Stream初始化方式

    這篇文章主要介紹了關(guān)于List、Map、Stream初始化方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • java web中使用cookie記住用戶的賬號和密碼

    java web中使用cookie記住用戶的賬號和密碼

    這篇文章主要介紹了java web中使用cookie記住用戶的賬號和密碼的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • Java Eclipse進行斷點調(diào)試的方法

    Java Eclipse進行斷點調(diào)試的方法

    本篇文章主要介紹了Java Eclipse進行斷點調(diào)試的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • SpringBoot2.3.0配置JPA的實現(xiàn)示例

    SpringBoot2.3.0配置JPA的實現(xiàn)示例

    這篇文章主要介紹了SpringBoot2.3.0配置JPA的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Java 8新增的方法參數(shù)反射實例分析

    Java 8新增的方法參數(shù)反射實例分析

    這篇文章主要介紹了Java 8新增的方法參數(shù)反射,結(jié)合實例形式分析了java8新增api方法參數(shù)反射相關(guān)操作技巧,需要的朋友可以參考下
    2019-07-07
  • 解決idea配置Tomcat Deployment沒有artifact選項的問題

    解決idea配置Tomcat Deployment沒有artifact選項的問題

    今天在配置的時候tomcat deployment中卻找不到artifact,沒有artifact就不能打成war包上傳到服務(wù)器了,那么怎么解決沒有artifact選項的問題呢,今天通過本文給大家分享idea配置Tomcat Deployment沒有artifact選項的解決方案,一起看看吧
    2023-10-10
  • java list去重操作實現(xiàn)方式

    java list去重操作實現(xiàn)方式

    Java中的List是可以包含重復(fù)元素的(hash code 和equals),接下來將介紹兩種方式實現(xiàn)java list去重操作,感興趣的朋友可以參考下
    2012-12-12
  • hashtable桶數(shù)通常會取一個素數(shù)分析

    hashtable桶數(shù)通常會取一個素數(shù)分析

    這篇文章主要介紹了hashtable桶數(shù)通常會取一個素數(shù)分析的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • java.lang.OutOfMemoryError: Java heap space錯誤的問題解決

    java.lang.OutOfMemoryError: Java heap space錯誤

    本文主要介紹了java.lang.OutOfMemoryError: Java heap space錯誤的問題解決,包括內(nèi)存泄漏、數(shù)據(jù)過大和JVM堆大小配置不足,提供了解決方法,具有一定的參考價值,感興趣的可以了解一下
    2025-03-03

最新評論

肥西县| 阜新市| 阳新县| 前郭尔| 潍坊市| 土默特右旗| 安宁市| 盱眙县| 图木舒克市| 枣强县| 南皮县| 华容县| 福海县| 宣武区| 大洼县| 隆化县| 丰原市| 枞阳县| 泗阳县| 房产| 武乡县| 临桂县| 固安县| 花莲市| 界首市| 女性| 江津市| 上犹县| 紫阳县| 芦山县| 都江堰市| 明溪县| 乾安县| 南汇区| 社旗县| 金溪县| 察雅县| 大丰市| 贵德县| 四平市| 丹棱县|