第8章 カスタム設定ソースの設定


デフォルトでは、Quarkus は application.properties ファイルからプロパティーを読み取ります。ただし、Quarkus は MicroProfile Config 機能をサポートするため、カスタム設定ソースを導入して別のソースから設定を読み込むことができます。

org.eclipse.microprofile.config.spi.ConfigSource インターフェースと org.eclipse.microprofile.config.spi.ConfigSourceProvider インターフェースを実装するクラスを提供することで、設定した値にカスタム設定ソースを導入できます。以下の手順では、Quarkus プロジェクトでカスタム設定ソースを実装する方法を説明します。

前提条件

Quarkus config-quickstart プロジェクトを作成していること。

手順

  1. プロジェクト内に ExampleConfigSourceProvider.java ファイルを作成し、以下の import を追加します。

    package org.acme.config;
    
    import java.util.Collections;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Set;
    
    import org.eclipse.microprofile.config.spi.ConfigSource;
    import org.eclipse.microprofile.config.spi.ConfigSourceProvider;
    Copy to Clipboard Toggle word wrap
  2. ConfigSourceProvider インターフェースを実装するクラスを作成し、その getConfigSources メソッドを上書きして ConfigSource オブジェクトの一覧を返すようにします。

    以下の例は、カスタムの ConfigSourceProvider クラスおよび ConfigSource クラスの実装を示しています。

    public class ExampleConfigSourceProvider implements ConfigSourceProvider {
    
        private final int times = 2;
        private final String name = "example";
        private final String value = "value";
    
        @Override
        public Iterable<ConfigSource> getConfigSources(ClassLoader forClassLoader) {
            InMemoryConfigSource configSource = new InMemoryConfigSource(Integer.MIN_VALUE, "example config source");
            for (int i = 0; i < this.times; i++) {
                configSource.add(this.name + ".key" + (i + 1), this.value + (i + 1));
            }
            return Collections.singletonList(configSource);
        }
    
        private static final class InMemoryConfigSource implements ConfigSource {
    
            private final Map<String, String> values = new HashMap<>();
            private final int ordinal;
            private final String name;
    
            private InMemoryConfigSource(int ordinal, String name) {
                this.ordinal = ordinal;
                this.name = name;
            }
    
            public void add(String key, String value) {
                values.put(key, value);
            }
    
            @Override
            public Map<String, String> getProperties() {
                return values;
            }
    
            @Override
            public Set<String> getPropertyNames() {
                return values.keySet();
            }
    
            @Override
            public int getOrdinal() {
                return ordinal;
            }
    
            @Override
            public String getValue(String propertyName) {
                return values.get(propertyName);
            }
    
            @Override
            public String getName() {
                return name;
            }
        }
    }
    Copy to Clipboard Toggle word wrap
  3. META-INF/services/ ディレクトリーに org.eclipse.microprofile.config.spi.ConfigSourceProvider サービスファイルを作成します。
  4. org.eclipse.microprofile.config.spi.ConfigSourceProvider ファイルを開き、カスタム ConfigSourceProvider クラスの完全修飾名を追加します。

    org.acme.config.ExampleConfigSourceProvider
    Copy to Clipboard Toggle word wrap
  5. 開発モードでアプリケーションをコンパイルするには、プロジェクトディレクトリーから以下のコマンドを入力します。

    ./mvnw quarkus:dev
    Copy to Clipboard Toggle word wrap

    アプリケーションを再起動すると、Quarkus はカスタム設定プロバイダーを選択します。

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る