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

Quarkus集成apollo配置中心

 更新時(shí)間:2022年02月23日 14:34:04   作者:kl  
這篇文章主要介紹了Quarkus集成apollo配置中心,文中詳細(xì)的講解了Quarkus的config構(gòu)成,以及apollo集成實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助

前言

Quarkus默認(rèn)的配置文件和spring boot 一樣,默認(rèn)讀取application.properties文件。

apollo是一個(gè)配置集中管理的開源項(xiàng)目,已被廣泛應(yīng)用。

下面我們就分析下Quarkus的配置加載結(jié)構(gòu),將apollo集成進(jìn)來。

Eclipse MicroProfile Config:https://github.com/eclipse/microprofile-config/

smallrye-config:https://github.com/smallrye/smallrye-config

Quarkus的config構(gòu)成

Quarkus的配置功能是基于Eclipse MicroProfile Config配置規(guī)范而來的,MicroProfile Config本身不提供配置功能的實(shí)現(xiàn),只提供了基礎(chǔ)的配置api抽象,smallrye-config是這個(gè)api的其中一個(gè)實(shí)現(xiàn),Quarkus里用的就是smallrye-config。

microProfile config設(shè)計(jì)

1、可以通過ConfigProvider#getConfig()訪問應(yīng)用程序的當(dāng)前配置。

2、一個(gè)配置包括從org.eclipse.microprofile.config.spi.ConfigSource接口收集的列表。

這些ConfigSource根據(jù)其序號(hào)進(jìn)行排序。這樣,可以從外部以較低的重要性覆蓋配置。

默認(rèn)情況下,有3個(gè)默認(rèn)的ConfigSources:

  • System.getProperties() (ordinlal =400)
  • System.getenv()(ordinal =300)
  • ClassPath上的所有META-INF / microprofile-config.properties文件。(默認(rèn)ordinal = 100,可通過每個(gè)文件內(nèi)的config_ordinal屬性分別配置)

因此,可以在與應(yīng)用程序打包在一起的上述文件中指定默認(rèn)值,以后可以為每個(gè)部署覆蓋默認(rèn)值。較高的序數(shù)優(yōu)先于較低的序數(shù)。

從microProfile config設(shè)計(jì)來看,配置文件應(yīng)該是META-INF / microprofile-config.properties文件才對(duì),但是除了上面默認(rèn)的三個(gè)配置源外,Quarkus也提供了一個(gè),代碼見:

io.quarkus.runtime.configuration.ApplicationPropertiesConfigSource,

如:

public abstract class ApplicationPropertiesConfigSource extends PropertiesConfigSource {
    private static final long serialVersionUID = -4694780118527396798L;
    static final String APPLICATION_PROPERTIES = "application.properties";
    static final String MP_PROPERTIES = "META-INF/microprofile-config.properties";
    ApplicationPropertiesConfigSource(InputStream is, int ordinal) {
        super(readProperties(is), APPLICATION_PROPERTIES, ordinal);
    }
    ApplicationPropertiesConfigSource(InputStream is, String nm, int ordinal) {
        super(readProperties(is), nm, ordinal);
    }
    private static Map readProperties(final InputStream is) {
        if (is == null) {
            return Collections.emptyMap();
        }
        try (Closeable ignored = is) {
            try (InputStreamReader isr = new InputStreamReader(is, StandardCharsets.UTF_8)) {
                try (BufferedReader br = new BufferedReader(isr)) {
                    final Properties properties = new Properties();
                    properties.load(br);
                    return (Map) (Map) properties;
                }
            }
        } catch (IOException e) {
            throw new IOError(e);
        }
    }
}

集成apollo 

綜上,集成apollo就變得異常簡(jiǎn)單了,首先實(shí)現(xiàn)ConfigSource接口,我的實(shí)現(xiàn)如下:

/**
 * @author kl : http://kailing.pub
 * @version 1.0
 * @date 2020/7/8 11:15
 */
public class ApolloConfigSource implements ConfigSource {
    private final static String CONFIG_SOURCE_NAME = "Apollo";
    private final Config config = ConfigService.getAppConfig();
    @Override
    public SetgetPropertyNames() {
        return config.getPropertyNames();
    }
    @Override
    public int getOrdinal() {
        return 600;
    }
    @Override
    public Map getProperties() {
        Map properties = new HashMap<>(6);
        for (String key : getPropertyNames()) {
            properties.put(key, config.getProperty(key, null));
        }
        return properties;
    }
    @Override
    public String getValue(String propertyName) {
        return config.getProperty(propertyName, null);
    }
    @Override
    public String getName() {
        return CONFIG_SOURCE_NAME;
    }
}

第二步,在META-INF/services下,創(chuàng)建文件

org.eclipse.microprofile.config.spi.ConfigSource

將你的實(shí)現(xiàn)全路徑名稱寫入這個(gè)文件,聲明配置源即可,如下圖所示: 

 現(xiàn)在,你可以將你的application.properties中的所有配置全部復(fù)制到apollo中了,然后刪除這個(gè)文件,重新啟動(dòng)項(xiàng)目,你會(huì)發(fā)現(xiàn)一起運(yùn)行正常

以上就是Quarkus集成apollo配置中心的詳細(xì)內(nèi)容,更多關(guān)于Quarkus集成apollo配置的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 大話Java混合運(yùn)算規(guī)則

    大話Java混合運(yùn)算規(guī)則

    這篇文章主要介紹了大話Java混合運(yùn)算規(guī)則,小編覺得挺不錯(cuò)的,在這里分享給大家,需要的朋友可以了解下。
    2017-10-10
  • SpringBoot中各個(gè)層級(jí)結(jié)構(gòu)的具體實(shí)現(xiàn)

    SpringBoot中各個(gè)層級(jí)結(jié)構(gòu)的具體實(shí)現(xiàn)

    在SpringBoot項(xiàng)目中,常常會(huì)把代碼文件放入不同的包中,本文主要介紹了SpringBoot中各個(gè)層級(jí)結(jié)構(gòu)的具體實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-05-05
  • 詳細(xì)總結(jié)Java for循環(huán)的那些坑

    詳細(xì)總結(jié)Java for循環(huán)的那些坑

    在平常寫代碼的過程中循環(huán)是不可避免的,雖然for的語法并不復(fù)雜,但是在開發(fā)中還是會(huì)遇到一些坑,雖然大部分的坑都是自己的騷操作導(dǎo)致的.今天來總結(jié)一下for循環(huán)在開發(fā)中可能遇到的坑,不要在同樣的問題上再次犯錯(cuò).需要的朋友可以參考下
    2021-05-05
  • Java簡(jiǎn)單驗(yàn)證身份證功能示例

    Java簡(jiǎn)單驗(yàn)證身份證功能示例

    這篇文章主要介紹了Java簡(jiǎn)單驗(yàn)證身份證功能,涉及java針對(duì)字符串的截取、判斷相關(guān)操作技巧,需要的朋友可以參考下
    2017-06-06
  • java sqlserver text 類型字段讀取方法

    java sqlserver text 類型字段讀取方法

    有這樣一個(gè)需求,需要將原本存儲(chǔ)在數(shù)據(jù)庫(kù)中的文檔轉(zhuǎn)存至文件系統(tǒng)中,于是寫了一個(gè)簡(jiǎn)單的程序完成此功能
    2012-11-11
  • 使用@Validated注解進(jìn)行校驗(yàn)卻沒有效果的解決

    使用@Validated注解進(jìn)行校驗(yàn)卻沒有效果的解決

    這篇文章主要介紹了使用@Validated注解進(jìn)行校驗(yàn)卻沒有效果的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • 基于Java文件輸入輸出流實(shí)現(xiàn)文件上傳下載功能

    基于Java文件輸入輸出流實(shí)現(xiàn)文件上傳下載功能

    這篇文章主要為大家詳細(xì)介紹了基于Java文件輸入輸出流實(shí)現(xiàn)文件上傳下載功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • SpringBoot的服務(wù)注冊(cè)與發(fā)現(xiàn)示例

    SpringBoot的服務(wù)注冊(cè)與發(fā)現(xiàn)示例

    本篇文章主要介紹了SpringBoot的服務(wù)注冊(cè)與發(fā)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • spring注解 @Valid 的作用說明

    spring注解 @Valid 的作用說明

    這篇文章主要介紹了spring注解 @Valid 的作用說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • java并發(fā)容器ConcurrentHashMap深入分析

    java并發(fā)容器ConcurrentHashMap深入分析

    這篇文章主要為大家介紹了java并發(fā)容器ConcurrentHashMap使用示例及深入分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05

最新評(píng)論

富阳市| 揭西县| 通海县| 广河县| 盐边县| 碌曲县| 武威市| 甘南县| 南川市| 福泉市| 稷山县| 田阳县| 北川| 鹰潭市| 永登县| 陇南市| 平利县| 巴彦淖尔市| 准格尔旗| 永安市| 巴林右旗| 仙居县| 柏乡县| 襄汾县| 六盘水市| 宁津县| 中牟县| 湖南省| 炎陵县| 乌兰浩特市| 应城市| 承德县| 唐山市| 涿鹿县| 宜都市| 涟源市| 衡东县| 宜兰市| 安化县| 油尖旺区| 桑植县|