第4章 Quarkus アプリケーションへの設定値の注入


Red Hat ビルドの Quarkus は MicroProfile Config 機能 を使用して、設定データをアプリケーションに注入します。コンテキストおよび依存性注入 (CDI) を使用するか、コードに定義されたメソッドを使用して、設定にアクセスできます。

@ConfigProperty アノテーションを使用して、オブジェクトプロパティーをアプリケーションの MicroProfile ConfigSources ファイルのキーにマップできます。この手順では、個別のプロパティー設定を Quarkus config-quickstart プロジェクトに注入する方法を説明します。

前提条件

  • config-quickstart プロジェクトを作成している。

手順

  1. src/main/resources/application.properties ファイルを開きます。
  2. 設定プロパティーを設定ファイルに追加します。<key> はプロパティー名に、<value> はプロパティーの値に置き換えます。

    <key>=<value>

    以下の例は、Quarkus config-quickstart プロジェクトで greeting.message プロパティーおよび greeting.name プロパティーの値を設定する方法を示しています。

    src/main/resources/application.properties

    greeting.message = hello
    greeting.name = quarkus

    重要

    Quarkus プロパティーの接頭辞として quarkus を使用します。

  3. GreetingResource.java ファイルを確認し、次のインポートステートメントが含まれていることを確認します。

    import org.eclipse.microprofile.config.inject.ConfigProperty;
    import java.util.Optional;
  4. 次の例に示すように、@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

    1
    このプロパティーに値を指定しないとアプリケーションは失敗し、次の例外メッセージが出力されます。
    javax.enterprise.inject.spi.DeploymentException: No config value of type [class java.lang.String] exists for: greeting.message
    2
    greeting.suffix の値を指定しないと、Quarkus はその値をデフォルト値に解決します。
    3
    Optional パラメーターに値がないと、greeting.name の値は返されません。
    注記

    設定した値を注入するには、@ConfigProperty を使用します。@ConfigProperty でアノテーションが付けられたメンバーには、@Inject アノテーションは必要ありません。

  5. hello メソッドを編集して、次のメッセージを返します。

    src/main/java/org/acme/config/GreetingResource.java

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String hello() {
        return message + "  " + name.orElse("world") + suffix;
    }

  6. 開発モードでアプリケーションをコンパイルして起動します。

    ./mvnw quarkus:dev
  7. エンドポイントがメッセージを返すことを確認するには、新しいターミナルウィンドウに以下のコマンドを入力します。

    curl http://localhost:8080/greeting

    このコマンドは、以下の出力を返します。

    hello quarkus!
  8. アプリケーションを停止するには、CTRL+C を押します。

4.1. @ConfigProperties でのクラスのアノテーション

複数の関連する設定値を個別に注入する代わりに、@io.quarkus.arc.config.ConfigProperties アノテーションを使用して設定プロパティーをグループ化できます。以下の手順では、Quarkus config-quickstart プロジェクトでの @ConfigProperties アノテーションの使用を示しています。

前提条件

  • config-quickstart プロジェクトを作成している。

手順

  1. GreetingResource.java ファイルを確認し、次のインポートステートメントが含まれていることを確認します。

    src/main/java/org/acme/config/GreetingResource.java

    import java.util.Optional;
    import javax.inject.Inject;

  2. src/main/java/org/acme/config ディレクトリーに GreetingConfiguration.java ファイルを作成します。
  3. ConfigPropertiesOptional のインポートを GreetingConfiguration.java ファイルに追加します。

    src/main/java/org/acme/config/GreetingConfiguration.java

    import io.quarkus.arc.config.ConfigProperties;
    import java.util.Optional;
    import javax.inject.Inject;

  4. 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;
        }
    }

    1
    prefix はオプションです。接頭辞を指定しない場合は、クラスの名前で決定されます。この例では、接頭辞は greeting です。
    2
    greeting.suffix が設定されていない場合、! はデフォルト値です。
  5. @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();
        }
    }

  6. 開発モードでアプリケーションをコンパイルして起動します。

    ./mvnw quarkus:dev
    重要

    クラスプロパティーの値を指定しないと、アプリケーションはコンパイルに失敗し、値が指定されていないことを示す javax.enterprise.inject.spi.DeploymentException を受け取ります。これは、Optional フィールドおよびデフォルト値のフィールドには適用されません。

  7. エンドポイントがメッセージを返すことを確認するには、新しいターミナルウィンドウに以下のコマンドを入力します。

    curl http://localhost:8080/greeting
  8. 以下のメッセージが表示されます。

    hello quarkus!
  9. アプリケーションを停止するには、CTRL+C を押します。
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る