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

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)ⅲ謩e為資源名稱和資源對象,這是第一步
    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)文章

  • 詳解JavaSE實現(xiàn)IoC

    詳解JavaSE實現(xiàn)IoC

    簡單地說,IoC 是反轉(zhuǎn)控制,類似于好萊塢原則,主要有依賴查找和依賴注入實現(xiàn)。依賴查找是主動或手動的依賴查找方式,通常需要依賴容器或標(biāo)準(zhǔn)API實現(xiàn)。 而依賴注入則是手動或自動依賴綁定的方式,無需依賴特定的容器和API。本文將詳細介紹JavaSE實現(xiàn)IoC。
    2021-06-06
  • java IO流之轉(zhuǎn)換流的具體使用

    java IO流之轉(zhuǎn)換流的具體使用

    轉(zhuǎn)換流可以將一個字節(jié)流包裝成字符流,或者將一個字符流包裝成字節(jié)流,本文主要介紹了java IO流之轉(zhuǎn)換流的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • Spring Boot通過Junit實現(xiàn)單元測試過程解析

    Spring Boot通過Junit實現(xiàn)單元測試過程解析

    這篇文章主要介紹了Spring Boot通過Junit實現(xiàn)單元測試過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • C# TreeNode案例詳解

    C# TreeNode案例詳解

    這篇文章主要介紹了C# TreeNode案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Mybatis中 SQL語句復(fù)用

    Mybatis中 SQL語句復(fù)用

    這篇文章主要介紹了Mybatis中 SQL語句復(fù)用,需要的朋友可以參考下
    2017-03-03
  • SpringBoot(十)之郵件服務(wù)

    SpringBoot(十)之郵件服務(wù)

    這篇文章給大家介紹了SpringBoot郵件服務(wù)的相關(guān)知識,此文是使用springboot最新版本1.5.3進行開發(fā)的。本文給大家介紹的非常詳細,具有參考借鑒價值,需要的的朋友參考下吧
    2017-05-05
  • Java類加載器ClassLoader的使用詳解

    Java類加載器ClassLoader的使用詳解

    類加載器負責(zé)讀取Java字節(jié)代碼,并轉(zhuǎn)換成java.lang.Class類的一個實例的代碼模塊。本文主要和大家聊聊JVM類加載器ClassLoader的使用,需要的可以了解一下
    2022-12-12
  • 深入理解Spring Boot屬性配置文件

    深入理解Spring Boot屬性配置文件

    這篇文章主要給大家深入的介紹了關(guān)于Spring Boot屬性配置文件的相關(guān)資料,文中介紹的很詳細,相信對大家具有一定的參考借鑒價值,需要的朋友們下面來一起看看吧。
    2017-02-02
  • Spring Boot配置讀取實現(xiàn)方法解析

    Spring Boot配置讀取實現(xiàn)方法解析

    這篇文章主要介紹了Spring Boot配置讀取實現(xiàn)方法解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • github上的java項目怎么運行(面向小白)

    github上的java項目怎么運行(面向小白)

    這篇文章主要介紹了github上的java項目怎么運行(面向小白),今天從github把我以前寫的一個小demo下載下來了,第一次下載項目,摸索了一個多小時,才運行起來,需要的朋友可以參考下
    2019-06-06

最新評論