1.11. カスタム設定コンバーターの設定値としての使用
org.eclipse.microprofile.config.spi.Converter<T> を実装し、その完全修飾クラス名を META-INF/services/org.eclipse.microprofile.config.spi.Converter に追加することで、カスタムタイプを設定値として保存できます。コンバーターを使用すると、値の文字列表現をオブジェクトに変換できます。
前提条件
config-quickstart プロジェクトを作成している。
手順
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; } }コンバータークラスを実装し、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)); } }-
コンバーターの完全修飾クラス名
org.acme.config.MyCustomValueConverterをMETA-INF/services/org.eclipse.microprofile.config.spi.Converterサービスファイルに追加します。 GreetingResource.javaファイルに、MyCustomValueプロパティーを注入します。@ConfigProperty(name="custom") MyCustomValue value;この値を使用するように
helloメソッドを編集します。@GET @Produces(MediaType.TEXT_PLAIN) public String hello() { return message + " " + name.orElse("world") + " - " + value.value(); }application.propertiesファイルに、変換する文字列表現を追加します。custom=1234以下のコマンドを入力して、開発モードでアプリケーションをコンパイルし、起動します。
./mvnw quarkus:devターミナルウィンドウを開いて次のコマンドを入力し、
/greetingエンドポイントが予期したメッセージを返すことを確認します。要求の例
curl http://localhost:8080/greetingアプリケーションがカスタム設定を正常に読み取ると、コマンドは次のレスポンスを返します。
hello world - 1234注記カスタムコンバータークラスは
publicで、引数なしのコンストラクターpublicがなければなりません。カスタムコンバータークラスはabstractであってはなりません。
1.11.1. カスタムコンバーターの優先度の設定 リンクのコピーリンクがクリップボードにコピーされました!
Quarkus コアコンバータの優先度は、すべてデフォルトで 200 です。他のコンバーターの優先度は、すべてデフォルトで 100 です。jakarta.annotation.Priority アノテーションを使用して、カスタムコンバーターの優先度を上げることができます。
次の手順は、優先度 150 のカスタムコンバーター AnotherCustomValueConverter の実装を示しています。これは、デフォルトの優先度 100 に設定されている前のセクションの MyCustomValueConverter よりも優先されます。
前提条件
-
config-quickstartプロジェクトを作成している。 - アプリケーションのカスタム設定コンバーターを作成している。
手順
クラスに
@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)); } }プロジェクトの
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 スタートガイド でコンパイルおよびパッケージ化のセクションを参照してください。