4.2. ネストされたオブジェクト設定の使用
既存のクラス内でネストされたクラスを定義できます。この手順では、config-quickstart プロジェクトでネストされたクラスの設定を作成する方法を説明します。
前提条件
-
config-quickstartプロジェクトを作成している。
手順
GreetingConfiguration.javaファイルを確認し、次のインポートステートメントが含まれていることを確認します。src/main/java/org/acme/config/GreetingConfiguration.java
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クラスとそのプロパティーの設定を示しています。src/main/java/org/acme/config/GreetingConfiguration.java
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の例に示すように、
GreetingConfigurationクラス内にネストされたクラスを追加します。src/main/java/org/acme/config/GreetingConfiguration.java
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例は、ネストされたクラス
ContentConfigを示しています。フィールドの名前 (ここではcontent) が、オブジェクトにバインドされるプロパティーの名前を決定します。application.propertiesファイルでgreeting.content.prize-amountおよびgreeting.content.recipients設定プロパティーを設定します。次の例は、
GreetingConfigurationクラスとContentConfigクラスのプロパティーの値を示しています。src/main/resources/application.properties
greeting.message = hello greeting.name = quarkus greeting.content.prize-amount=10 greeting.content.recipients=Jane,John
greeting.message = hello greeting.name = quarkus greeting.content.prize-amount=10 greeting.content.recipients=Jane,JohnCopy to Clipboard Copied! Toggle word wrap Toggle overflow @Injectアノテーションを使用してGreetingConfigurationクラスをGreetingResourceクラスに注入し、/greetingエンドポイントが返すメッセージ文字列を更新し、追加した新しいgreeting.content.prize-amountプロパティーおよびgreeting.content.recipientsプロパティーに設定した値をメッセージに表示させます。src/main/java/org/acme/config/GreetingResource.java
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フィールドおよびデフォルト値のフィールドには適用されません。エンドポイントがメッセージを返すことを確認するには、新しいターミナルウィンドウに以下のコマンドを入力します。
curl http://localhost:8080/greeting
curl http://localhost:8080/greetingCopy to Clipboard Copied! Toggle word wrap Toggle overflow 1 行目に挨拶、2 行目に賞金の受賞者と賞金額が書かれたメッセージを受信します。
hello quarkus! Jane,John receive total of candies: 10
hello quarkus! Jane,John receive total of candies: 10Copy to Clipboard Copied! Toggle word wrap Toggle overflow - アプリケーションを停止するには、CTRL+C を押します。
@ConfigProperties のアノテーションが付けられたクラスは、以下に示す例のような Bean Validation のアノテーションを付けることができます。
プロジェクトには quarkus-hibernate-validator 依存関係が含まれている必要があります。