第4章 Quarkus アプリケーションへの設定値の注入
Red Hat ビルドの Quarkus は MicroProfile Config 機能 を使用して、設定データをアプリケーションに注入します。コンテキストおよび依存性注入 (CDI) を使用するか、コードに定義されたメソッドを使用して、設定にアクセスできます。
@ConfigProperty アノテーションを使用して、オブジェクトプロパティーをアプリケーションの MicroProfile ConfigSources ファイルのキーにマップできます。この手順では、個別のプロパティー設定を Quarkus config-quickstart プロジェクトに注入する方法を説明します。
前提条件
-
config-quickstartプロジェクトを作成している。
手順
-
src/main/resources/application.propertiesファイルを開きます。 設定プロパティーを設定ファイルに追加します。
<key>はプロパティー名に、<value>はプロパティーの値に置き換えます。<key>=<value>以下の例は、Quarkus
config-quickstartプロジェクトでgreeting.messageプロパティーおよびgreeting.nameプロパティーの値を設定する方法を示しています。src/main/resources/application.properties
greeting.message = hello greeting.name = quarkus重要Quarkus プロパティーの接頭辞として
quarkusを使用します。GreetingResource.javaファイルを確認し、次のインポートステートメントが含まれていることを確認します。import org.eclipse.microprofile.config.inject.ConfigProperty; import java.util.Optional;次の例に示すように、
@ConfigPropertyで注釈を付けて、対応するプロパティーを定義します。src/main/java/org/acme/config/GreetingResource.java
@ConfigProperty(name = "greeting.message")1 String message; @ConfigProperty(name = "greeting.suffix", defaultValue="!")2 String suffix; @ConfigProperty(name = "greeting.name") Optional<String> name;3 注記設定した値を注入するには、
@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; }開発モードでアプリケーションをコンパイルして起動します。
./mvnw quarkus:devエンドポイントがメッセージを返すことを確認するには、新しいターミナルウィンドウに以下のコマンドを入力します。
curl http://localhost:8080/greetingこのコマンドは、以下の出力を返します。
hello quarkus!- アプリケーションを停止するには、CTRL+C を押します。
4.1. @ConfigProperties でのクラスのアノテーション リンクのコピーリンクがクリップボードにコピーされました!
複数の関連する設定値を個別に注入する代わりに、@io.quarkus.arc.config.ConfigProperties アノテーションを使用して設定プロパティーをグループ化できます。以下の手順では、Quarkus config-quickstart プロジェクトでの @ConfigProperties アノテーションの使用を示しています。
前提条件
-
config-quickstartプロジェクトを作成している。
手順
GreetingResource.javaファイルを確認し、次のインポートステートメントが含まれていることを確認します。src/main/java/org/acme/config/GreetingResource.java
import java.util.Optional; import javax.inject.Inject;-
src/main/java/org/acme/configディレクトリーにGreetingConfiguration.javaファイルを作成します。 ConfigPropertiesとOptionalのインポートをGreetingConfiguration.javaファイルに追加します。src/main/java/org/acme/config/GreetingConfiguration.java
import io.quarkus.arc.config.ConfigProperties; import java.util.Optional; import javax.inject.Inject;GreetingConfiguration.javaファイルにgreetingプロパティーのGreetingConfigurationクラスを作成します。src/main/java/org/acme/config/GreetingConfiguration.java
@ConfigProperties(prefix = "greeting")1 public class GreetingConfiguration { private String message; private String suffix = "!";2 private Optional<String> name; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public String getSuffix() { return suffix; } public void setSuffix(String suffix) { this.suffix = suffix; } public Optional<String> getName() { return name; } public void setName(Optional<String> name) { this.name = name; } }@Injectアノテーションを使用してGreetingConfigurationクラスをGreetingResourceクラスに注入します。src/main/java/org/acme/config/GreetingResource.java
@Path("/greeting") public class GreetingResource { @Inject GreetingConfiguration config; @GET @Produces(MediaType.TEXT_PLAIN) public String hello() { return config.getMessage() + " " + config.getName().orElse("world") + config.getSuffix(); } }開発モードでアプリケーションをコンパイルして起動します。
./mvnw quarkus:dev重要クラスプロパティーの値を指定しないと、アプリケーションはコンパイルに失敗し、値が指定されていないことを示す
javax.enterprise.inject.spi.DeploymentExceptionを受け取ります。これは、Optionalフィールドおよびデフォルト値のフィールドには適用されません。エンドポイントがメッセージを返すことを確認するには、新しいターミナルウィンドウに以下のコマンドを入力します。
curl http://localhost:8080/greeting以下のメッセージが表示されます。
hello quarkus!- アプリケーションを停止するには、CTRL+C を押します。