第4章 Quarkus アプリケーションへの設定値のインジェクション
Red Hat ビルドの Quarkus は MicroProfile Config 機能 を使用して、設定データをアプリケーションにインジェクトします。コンテキストおよびディペンデンシーインジェクション (CDI) を使用するか、コードに定義されたメソッドを使用して、設定にアクセスできます。
@ConfigProperty アノテーションを使用して、オブジェクトプロパティーをアプリケーションの MicroProfile ConfigSources ファイルのキーにマップできます。この手順では、個別のプロパティー設定を Quarkus config-quickstart プロジェクトにインジェクトする方法を説明します。
前提条件
-
Quarkus
config-quickstartプロジェクトを作成していること。
手順
-
src/main/resources/application.propertiesファイルを開きます。 設定プロパティーを設定ファイルに追加します。
<KEY>はプロパティー名に、<VALUE>はプロパティーの値に置き換えます。<KEY>=<VALUE>
<KEY>=<VALUE>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の例は、Quarkus
config-quickstartプロジェクトのgreeting.messageプロパティーおよびgreeting.nameプロパティーの値を設定する方法を示しています。greeting.message = hello greeting.name = quarkus
greeting.message = hello greeting.name = quarkusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要quarkusを Quarkus プロパティーの接頭辞として使用します。GreetingResource.javaファイルを確認し、以下の import ステートメントが含まれることを確認します。import org.eclipse.microprofile.config.inject.ConfigProperty; import java.util.Optional;
import org.eclipse.microprofile.config.inject.ConfigProperty; import java.util.Optional;Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の構文でアノテーションを付けて、同等のプロパティーを定義します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記設定した値をインジェクトするには、
@ConfigPropertyを使用できます。@ConfigPropertyアノテーションが付けられたメンバーには、@Injectアノテーションを付ける必要はありません。helloメソッドを編集して、以下のメッセージを返します。@GET @Produces(MediaType.TEXT_PLAIN) public String hello() { return message + " " + name.orElse("world") + suffix; }@GET @Produces(MediaType.TEXT_PLAIN) public String hello() { return message + " " + name.orElse("world") + suffix; }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 開発モードで Quarkus アプリケーションをコンパイルするには、プロジェクトディレクトリーから以下のコマンドを入力します。
./mvnw quarkus:dev
./mvnw quarkus:devCopy to Clipboard Copied! Toggle word wrap Toggle overflow エンドポイントがメッセージを返すことを確認するには、新しいターミナルウィンドウに以下のコマンドを入力します。
curl http://localhost:8080/greeting
curl http://localhost:8080/greetingCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、以下の出力を返します。
hello quarkus!
hello quarkus!Copy to Clipboard Copied! Toggle word wrap Toggle overflow - アプリケーションを停止するには、CTRL+C を押します。
4.1. @ConfigProperties でのクラスのアノテーション リンクのコピーリンクがクリップボードにコピーされました!
複数の関連する設定値を個別にインジェクトする代わりに、@io.quarkus.arc.config.ConfigProperties アノテーションを使用して設定プロパティーをグループ化できます。以下の手順では、Quarkus config-quickstart プロジェクトでの @ConfigProperties アノテーションの使用方法を説明しています。
前提条件
-
Quarkus
config-quickstartプロジェクトを作成していること。
手順
GreetingResource.javaファイルを確認し、以下の import ステートメントが含まれることを確認します。package org.acme.config; import java.util.Optional; import javax.inject.Inject;
package org.acme.config; import java.util.Optional; import javax.inject.Inject;Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
src/main/java/org/acme/configディレクトリーにGreetingConfiguration.javaファイルを作成します。 @ConfigPropertiesおよび@Optionalの import をGreetingConfiguration.javaファイルに追加します。package org.acme.config; import io.quarkus.arc.config.ConfigProperties; import java.util.Optional;
package org.acme.config; import io.quarkus.arc.config.ConfigProperties; import java.util.Optional;Copy to Clipboard Copied! Toggle word wrap Toggle overflow GreetingConfiguration.javaファイルに、greetingプロパティーのGreetingConfigurationクラスを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテキストおよびディペンデンシーインジェクション (CDI)
@Injectアノテーションを使用して、属性をGreetingResourceクラスにインジェクトします。@Inject GreetingConfiguration greetingConfiguration;
@Inject GreetingConfiguration greetingConfiguration;Copy to Clipboard Copied! Toggle word wrap Toggle overflow 開発モードでお使いのアプリケーションをコンパイルするには、プロジェクトディレクトリーから以下のコマンドを入力します。
./mvnw quarkus:dev
./mvnw quarkus:devCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要クラスプロパティーの値を指定しない場合、アプリケーションは失敗し、
javax.enterprise.inject.spi.DeploymentExceptionがスローされ、値が指定されていないことを示します。これは、Optionalフィールドおよびデフォルト値のフィールドには適用されません。
4.2. ネストされたオブジェクト設定の使用 リンクのコピーリンクがクリップボードにコピーされました!
既存のクラス内でネストされたクラスを定義できます。この手順では、Quarkus config-quickstart プロジェクトでネストされたクラスの設定を作成する方法を説明します。
前提条件
-
Quarkus
config-quickstartプロジェクトを作成していること。
手順
GreetingConfiguration.javaファイルを確認し、以下の import ステートメントが含まれることを確認します。import io.quarkus.arc.config.ConfigProperties; import java.util.Optional; import java.util.List;
import io.quarkus.arc.config.ConfigProperties; import java.util.Optional; import java.util.List;Copy to Clipboard Copied! Toggle word wrap Toggle overflow @ConfigPropertiesアノテーションを使用してGreetingConfiguration.javaファイルに設定を追加します。以下の例は、
GreetingConfigurationクラスおよびそのプロパティーの設定について示しています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下に示す例のようなネストされたクラス設定を追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例では、ネストされたクラス
HiddenConfigを示しています。フィールドの名前 (ここではhidden) が、オブジェクトにバインドされるプロパティーの名前を決定します。同等の設定プロパティーを
application.propertiesファイルに追加します。以下の例は、
GreetingConfigurationクラスおよびHiddenConfigクラスのプロパティーの値を示しています。greeting.message = hello greeting.name = quarkus greeting.hidden.prize-amount=10 greeting.hidden.recipients=Jane,John
greeting.message = hello greeting.name = quarkus greeting.hidden.prize-amount=10 greeting.hidden.recipients=Jane,JohnCopy to Clipboard Copied! Toggle word wrap Toggle overflow 開発モードでお使いのアプリケーションをコンパイルするには、プロジェクトディレクトリーから以下のコマンドを入力します。
./mvnw quarkus:dev
./mvnw quarkus:devCopy to Clipboard Copied! Toggle word wrap Toggle overflow
@ConfigProperties のアノテーションが付けられたクラスは、以下に示す例のような Bean Validation アノテーションを付けることができます。
プロジェクトには quarkus-hibernate-validator 依存関係が含まれている必要があります。
4.3. @ConfigProperties でのインターフェースのアノテーション リンクのコピーリンクがクリップボードにコピーされました!
プロパティーを管理する代替方法は、インターフェースとして定義することです。インターフェースに @ConfigProperties のアノテーションを付けると、そのインターフェースは他のインターフェースを拡張でき、インターフェース階層全体のメソッドを使用してプロパティーをバインドできます。
この手順では、Quarkus config-quickstart プロジェクトのインターフェースとしての GreetingConfiguration クラスの実装について説明します。
前提条件
-
Quarkus
config-quickstartプロジェクトを作成していること。
手順
GreetingConfiguration.javaファイルを確認し、以下の import ステートメントが含まれることを確認します。package org.acme.config; import io.quarkus.arc.config.ConfigProperties; import org.eclipse.microprofile.config.inject.ConfigProperty; import java.util.Optional;
package org.acme.config; import io.quarkus.arc.config.ConfigProperties; import org.eclipse.microprofile.config.inject.ConfigProperty; import java.util.Optional;Copy to Clipboard Copied! Toggle word wrap Toggle overflow GreetingConfigurationクラスをインターフェースとしてGreetingConfiguration.javaファイルに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 開発モードでお使いのアプリケーションをコンパイルするには、プロジェクトディレクトリーから以下のコマンドを入力します。
./mvnw quarkus:dev
./mvnw quarkus:devCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要interface フィールドの値を指定しないと、アプリケーションが失敗し、
javax.enterprise.inject.spi.DeploymentExceptionがスローされ、値が指定されていないことを示します。これは、Optionalフィールドおよびデフォルト値のフィールドには適用されません。