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