1.10. カスタム設定ソースの設定


Quarkus アプリケーションは、デフォルトでプロジェクトの src/main/resources サブディレクトリー内の application.properties ファイルからプロパティーを読み取ります。Quarkus では、外部化された設定の MicroProfile Config 仕様に従い、他のソースからアプリケーション設定プロパティーをロードすることもできます。org.eclipse.microprofile.config.spi.ConfigSource および org.eclipse.microprofile.config.spi.ConfigSourceProvider インターフェイスを実装するクラスを定義することで、アプリケーションは他のソースから設定プロパティーをロードできるようになります。以下の手順では、Quarkus プロジェクトにカスタム設定ソースを実装する方法を説明します。

前提条件

Quarkus config-quickstart プロジェクトがある。

手順

  1. org.eclipse.microprofile.config.spi.ConfigSourceProvider インターフェイスを実装するプロジェクトでクラスファイルを作成します。ConfigSource オブジェクトのリストを返すには、getConfigSources() メソッドをオーバーライドする必要があります。

    org.acme.config.InMemoryConfigSourceProvider の例

    package org.acme.config;
    
    import org.eclipse.microprofile.config.spi.ConfigSource;
    import org.eclipse.microprofile.config.spi.ConfigSourceProvider;
    
    import java.util.List;
    
    public class InMemoryConfigSourceProvider implements ConfigSourceProvider {
    
        @Override
        public Iterable<ConfigSource> getConfigSources(ClassLoader classLoader) {
        return List.of(new InMemoryConfigSource());
        }
    }
    Copy to Clipboard Toggle word wrap

  2. org.eclipse.microprofile.config.spi.ConfigSource インターフェイスを実装する InMemoryConfigSource クラスを作成します。

    org.acme.config.InMemoryConfigSource の例

    package org.acme.config;
    
    import org.eclipse.microprofile.config.spi.ConfigSource;
    
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Set;
    
    public class InMemoryConfigSource implements ConfigSource {
    private static final Map<String, String> configuration = new HashMap<>();
    
    
      static {
          configuration.put("my.prop", "1234");
      }
    
        @Override
        public int getOrdinal() { 
    1
    
          return 275;
        }
    
        @Override
        public Set<String> getPropertyNames() {
          return configuration.keySet();
        }
    
        @Override
        public String getValue(final String propertyName) {
          return configuration.get(propertyName);
        }
    
        @Override
        public String getName() {
          return InMemoryConfigSource.class.getSimpleName();
        }
    }
    Copy to Clipboard Toggle word wrap

    1
    getOrdinal() メソッドは、ConfigSource クラスの優先度を返します。そのため、複数の設定ソースが同じプロパティーを定義している場合でも、Quarkus は最も優先度の高いConfigSource クラスで定義されている適切な値を選択できます。
  1. プロジェクトの src/main/resources/META-INF/services/ サブディレクトリーに org.eclipse.microprofile.config.spi.ConfigSourceProvider という名前のファイルを作成し、作成したファイルに ConfigSourceProvider を実装するクラスの完全修飾名を入力します。

    org.eclipse.microprofile.config.spi.ConfigSourceProvider ファイルの例:

    org.acme.config.InMemoryConfigSourceProvider
    Copy to Clipboard Toggle word wrap

    アプリケーションをコンパイルして開始する際に、作成した ConfigSourceProvider が確実に登録およびインストールされているようにするには、前の手順を完了する必要があります。

  2. プロジェクト内の GreetingResource.java ファイルを編集して、次の更新を追加します。

    @ConfigProperty(name="my.prop") int value;
    Copy to Clipboard Toggle word wrap
  3. GreetingResource.java ファイルで、hello メソッドを展開して新しいプロパティーを使用します。

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String hello() {
      return message + " " + name.orElse("world") + " " + value;
    }
    Copy to Clipboard Toggle word wrap
  4. 以下のコマンドを入力して、開発モードでアプリケーションをコンパイルし、起動します。

    ./mvnw quarkus:dev
    Copy to Clipboard Toggle word wrap
  5. ターミナルウィンドウを開いて次のコマンドを入力し、/greeting エンドポイントが予期したメッセージを返すことを確認します。

    要求の例

    curl http://localhost:8080/greeting
    Copy to Clipboard Toggle word wrap

  6. アプリケーションがカスタム設定を正常に読み取ると、コマンドは次のレスポンスを返します。

    hello world 1234
    Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat