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


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

前提条件

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

手順

  1. org.acme.config パッケージで、次の内容を含む 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;
        }
    }

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

  3. コンバーターの完全修飾クラス名 org.acme.config.MyCustomValueConverterMETA-INF/services/org.eclipse.microprofile.config.spi.Converter サービスファイルに追加します。
  4. GreetingResource.java ファイルに、MyCustomValue プロパティーを注入します。

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

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

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

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

    要求の例

    curl http://localhost:8080/greeting

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

    hello world - 1234
    注記

    カスタムコンバータークラスは 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));
        }
    }

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

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

    org.acme.config.AnotherCustomValueConverter

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

検証

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

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.