第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プロパティーの値の設定方法を示しています。src/main/resources/application.properties
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 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 以下の例のように
@ConfigPropertyのアノテーションを付けて、対応するプロパティーを定義します。src/main/java/org/acme/config/GreetingResource.java
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記設定した値を注入するには、
@ConfigPropertyを使用します。@ConfigPropertyアノテーションが付けられたメンバーには、@Injectアノテーションを付ける必要はありません。helloメソッドを編集して、以下のメッセージを返します。src/main/java/org/acme/config/GreetingResource.java
@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 開発モードでアプリケーションをコンパイルして起動します。
./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ファイルを確認し、以下のインポートステートメントが含まれることを確認します。src/main/java/org/acme/config/GreetingResource.java
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のインポートをGreetingConfiguration.javaファイルに追加します。src/main/java/org/acme/config/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クラスを作成します。src/main/java/org/acme/config/GreetingConfiguration.java
Copy to Clipboard Copied! Toggle word wrap Toggle overflow @Injectアノテーションを使用してGreetingConfigurationクラスをGreetingResourceクラスに注入します。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 以下のメッセージが表示されます。
hello quarkus!
hello quarkus!Copy to Clipboard Copied! Toggle word wrap Toggle overflow - アプリケーションを停止するには、CTRL+C を押します。
4.2. ネストされたオブジェクト設定の使用 リンクのコピーリンクがクリップボードにコピーされました!
既存のクラス内でネストされたクラスを定義できます。この手順では、Quarkus config-quickstart プロジェクトでネストされたクラスの設定を作成する方法を説明します。
前提条件
-
Quarkus
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ファイルに追加します。以下の例は、
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クラスに注入します。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 以下のメッセージが表示されます。
hello quarkus!
hello quarkus!Copy to Clipboard Copied! Toggle word wrap Toggle overflow - アプリケーションを停止するには、CTRL+C を押します。
@ConfigProperties のアノテーションが付けられたクラスは、以下に示す例のような Bean Validation のアノテーションを付けることができます。
プロジェクトには quarkus-hibernate-validator 依存関係が含まれている必要があります。
4.3. @ConfigProperties でのインターフェースのアノテーション リンクのコピーリンクがクリップボードにコピーされました!
プロパティーを管理する代替方法は、インターフェースとして定義することです。インターフェースに @ConfigProperties のアノテーションを付けると、そのインターフェースは他のインターフェースを拡張でき、インターフェース階層全体のメソッドを使用してプロパティーをバインドできます。
この手順では、Quarkus config-quickstart プロジェクトのインターフェースとしての GreetingConfiguration クラスの実装について説明します。
前提条件
-
Quarkus
config-quickstartプロジェクトを作成していること。
手順
GreetingConfiguration.javaファイルを確認し、以下のインポートステートメントが含まれることを確認します。src/main/java/org/acme/config/GreetingConfiguration.java
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ファイルに追加します。src/main/java/org/acme/config/GreetingConfiguration.java
Copy to Clipboard Copied! Toggle word wrap Toggle overflow @Injectアノテーションを使用してGreetingConfigurationクラスをGreetingResourceクラスに注入します。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 以下のメッセージが表示されます。
hello quarkus!
hello quarkus!Copy to Clipboard Copied! Toggle word wrap Toggle overflow - アプリケーションを停止するには、CTRL+C を押します。