1.11. カスタム設定コンバーターの設定値としての使用


org.eclipse.microprofile.config.spi.Converter<T> を実装し、その完全修飾クラス名を META-INF/services/org.eclipse.microprofile.config.spi.Converter に追加することで、カスタムタイプを設定値として保存できます。コンバーターを使用すると、値の文字列表現をオブジェクトに変換できます。

前提条件

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

手順

  1. org.acme.config package で、次の内容を含む org.acme.config.MyCustomValue クラスを作成します。

    カスタム設定値の例

      package org.acme.config;
    
      public class MyCustomValue {
    
        private final int value;
    
        public MyCustomValue(Integer value) {
           this.value = value;
       }
    
       public int value() {
           return value;
       }
    }
    Copy to Clipboard Toggle word wrap

  2. コンバータークラスを実装し、convert メソッドをオーバーライドして MyCustomValue インスタンスを生成します。

    コンバータークラスの実装例

    package org.acme.config;
    
    import org.eclipse.microprofile.config.spi.Converter;
    
    public class MyCustomValueConverter implements Converter<MyCustomValue> {
    
        @Override
        public MyCustomValue convert(String value) {
            return new MyCustomValue(Integer.valueOf(value));
        }
    }
    Copy to Clipboard Toggle word wrap

  3. 次の例に示すように、META-INF/services/org.eclipse.microprofile.config.spi.Converter サービスファイルにコンバーターの完全修飾クラス名を含めます。

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

    org.acme.config.MyCustomValueConverter
    org.acme.config.SomeOtherConverter
    org.acme.config.YetAnotherConverter
    Copy to Clipboard Toggle word wrap

  4. GreetingResource.java ファイルに、MyCustomValue プロパティーを注入します。

    @ConfigProperty(name="custom")
        MyCustomValue value;
    Copy to Clipboard Toggle word wrap
  5. この値を使用するように hello メソッドを編集します。

    @GET
      @Produces(MediaType.TEXT_PLAIN)
      public String hello() {
          return message + " " + name.orElse("world") + " - " + value.value();
      }
    Copy to Clipboard Toggle word wrap
  6. application.properties ファイルに、変換する文字列表現を追加します。

    custom=1234
    Copy to Clipboard Toggle word wrap
  7. 以下のコマンドを入力して、開発モードでアプリケーションをコンパイルし、起動します。

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

    要求の例

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

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

    hello world - 1234
    Copy to Clipboard Toggle word wrap
    注記

    カスタムコンバータークラスは public で、引数なしのコンストラクター public がなければなりません。カスタムコンバータークラスは abstract であってはなりません。

1.11.1. カスタムコンバーターの優先度の設定

Quarkus コアコンバータの優先度は、すべてデフォルトで 200 です。他のコンバーターの優先度は、すべてデフォルトで 100 です。jakarta.annotation.Priority アノテーションを使用して、カスタムコンバーターの優先度を上げることができます。

次の手順は、優先度 150 のカスタムコンバーター AnotherCustomValueConverter の実装を示しています。これは、デフォルトの優先度 100 に設定されている前のセクションの MyCustomValueConverter よりも優先されます。

前提条件

  • config-quickstart プロジェクトを作成している。
  • アプリケーションのカスタム設定コンバーターを作成している。

手順

  1. クラスに @Priority アノテーションを付け、優先度の値を渡して、カスタムコンバーターの優先度を設定します。次の例では、優先度の値は 150 に設定されています。

    AnotherCustomValueConverter.java ファイルの例

    package org.acme.config;
    
    import jakarta.annotation.Priority;
    import org.eclipse.microprofile.config.spi.Converter;
    
    @Priority(150)
    public class AnotherCustomValueConverter implements Converter<MyCustomValue> {
    
        @Override
        public MyCustomValue convert(String value) {
        return new MyCustomValue(Integer.valueOf(value));
        }
      }
    Copy to Clipboard Toggle word wrap

  2. プロジェクトの src/main/resources/META-INF/services/ サブディレクトリーに org.eclipse.microprofile.config.spi.Converter という名前のファイルを作成し、作成したファイルに Converter を実装するクラスの完全修飾名をファイルに入力します。

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

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

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

検証

必要な設定を完了してから、次のステップとして Quarkus アプリケーションをコンパイルしてパッケージ化します。詳細と例については、Quarkus スタートガイド でコンパイルおよびパッケージ化のセクションを参照してください。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat