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


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 プロジェクトがある。

注記

このプロジェクトの完成例を参照するには、Quarkus Quickstarts アーカイブをダウンロードするか、Quarkus Quickstarts Git リポジトリーのクローンを作成して config-quickstart ディレクトリーに移動してください。

手順

  1. プロジェクトで、org.eclipse.microprofile.config.spi.ConfigSourceProvider インターフェイスを実装する新しいクラスを作成します。getConfigSources() メソッドをオーバーライドして、カスタム ConfigSource オブジェクトのリストを返します。

    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());
      }
    }

  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();
      }
    }

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

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

    org.acme.config.InMemoryConfigSourceProvider

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

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

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

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String hello() {
      return message + " " + name.orElse("world") + " " + value;
    }
  6. 開発モードでアプリケーションをコンパイルして起動します。

    ./mvnw quarkus:dev
  7. ターミナルウィンドウを開き、/greeting エンドポイントにリクエストを送信します。

    curl http://localhost:8080/greeting
  8. アプリケーションがカスタム設定を読み取り、期待どおりのメッセージを返したことを確認します。

    hello world 1234
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る