第10章 カスタム設定コンバーターの設定値としての使用


org.eclipse.microprofile.config.spi.Converter<T> を実装し、その完全修飾クラス名を META-INF/services/org.eclipse.microprofile.config.spi.Converter に追加することで、カスタムタイプを設定値として保存できます。

前提条件

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

手順

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

    org.acme.config.MicroProfileCustomValueConverter
    org.acme.config.SomeOtherConverter
    org.acme.config.YetAnotherConverter
  2. converter クラスを実装し、convert メソッドを上書きします。

    package org.acme.config;
    
    import org.eclipse.microprofile.config.spi.Converter;
    
    public class MicroProfileCustomValueConverter implements Converter<MicroProfileCustomValue> {
    
        @Override
        public MicroProfileCustomValue convert(String value) {
            return new MicroProfileCustomValue(Integer.valueOf(value));
        }
    }
    注記

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

  3. カスタムタイプを設定値として使用します。

    @ConfigProperty(name = "configuration.value.name")
    MicroProfileCustomValue value;

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

すべての Quarkus コアコンバーターのデフォルト優先度は 200 で、他のすべてのコンバーターは 100 です。ただし、javax.annotation.Priority アノテーションを使用してカスタムコンバーターにより高い優先度を設定できます。

以下の手順は、優先度が 150 に割り当てられたカスタムコンバーター MicroProfileCustomValue の実装を説明しています。これは、優先度が 100 である MicroProfileCustomValueConverter よりも優先されます。

前提条件

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

手順

  1. 以下のインポートステートメントをサービスファイルに追加します。

    package org.acme.config;
    
    import javax.annotation.Priority;
    import org.eclipse.microprofile.config.spi.Converter;
  2. クラスに @Priority アノテーションを付け、優先度の値を渡して、カスタムコンバーターの優先度を設定します。

    @Priority(150)
    public class MyCustomConverter implements Converter<MicroProfileCustomValue> {
    
        @Override
        public MicroProfileCustomValue convert(String value) {
    
            final int secretNumber;
            if (value.startsFrom("OBF:")) {
                secretNumber = Integer.valueOf(SecretDecoder.decode(value));
            } else {
                secretNumber = Integer.valueOf(value);
            }
    
            return new MicroProfileCustomValue(secretNumber);
        }
    }
    注記

    新しいコンバーターを追加する場合は、META-INF/services/org.eclipse.microprofile.config.spi.Converter サービスファイルにリストする必要があります。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.