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


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

前提条件

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

手順

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

    org.acme.config.MicroProfileCustomValueConverter
    org.acme.config.SomeOtherConverter
    org.acme.config.YetAnotherConverter
    Copy to Clipboard Toggle word wrap
  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));
        }
    }
    Copy to Clipboard Toggle word wrap
    注記

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

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

    @ConfigProperty(name = "configuration.value.name")
    MicroProfileCustomValue value;
    Copy to Clipboard Toggle word wrap

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

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

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

前提条件

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

手順

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

    package org.acme.config;
    
    import javax.annotation.Priority;
    import org.eclipse.microprofile.config.spi.Converter;
    Copy to Clipboard Toggle word wrap
  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);
        }
    }
    Copy to Clipboard Toggle word wrap
    注記

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

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat