1.3. Red Hat build of Quarkus アプリケーションに設定値を注入する


Red Hat build of Quarkus は、MicroProfile Config 機能を使用して設定データをアプリケーションに注入します。コンテキストと依存性注入 (CDI) を使用するか、コード内でメソッドを定義することで、設定にアクセスできます。

@ConfigProperty アノテーションを使用して、オブジェクトプロパティーをアプリケーションの MicroProfile Config Sources ファイルのキーにマップします。

次の手順と例は、Red Hat build of Quarkus アプリケーション設定ファイル application.properties を使用して、Quarkus config-quickstart プロジェクトに個別のプロパティー設定を注入する方法を示しています。

注記

MicroProfile Config configuration file (src/main/resources/META-INF/microprofile-config.properties) は、application.properties ファイルとまったく同じ方法で使用できます。

application.properties ファイルを使用することが推奨されます。

前提条件

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

手順

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

    <property_name>=<value>

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

    application.properties ファイルの例

    greeting.message=hello
    greeting.name=quarkus

    重要

    アプリケーションを設定する際に、アプリケーション固有プロパティーの前に quarkus の文字列を付けないでください。quarkus の接頭辞は、フレームワークレベルで Quarkus を設定するために予約されています。quarkus をアプリケーション固有プロパティーの接頭辞として使用すると、アプリケーションの実行時に予期しない結果が生じる可能性があります。

  3. プロジェクトの GreetingResource.java ファイルを確認します。このファイルには、/greeting エンドポイントで HTTP リクエストを送信した場合にメッセージを返す hello() メソッドが含まれる GreetingResource クラスがあります。

    GreetingResource.java ファイルの例

    package org.acme.config;
    
    import java.util.Optional;
    
    import jakarta.ws.rs.GET;
    import jakarta.ws.rs.Path;
    import jakarta.ws.rs.Produces;
    import jakarta.ws.rs.core.MediaType;
    
    import org.eclipse.microprofile.config.inject.ConfigProperty;
    
    @Path("/greeting")
    public class GreetingResource {
    
        String message;
        Optional<String> name;
        String suffix;
    
    
        @GET
        @Produces(MediaType.TEXT_PLAIN)
        public String hello() {
            return message + " " + name.orElse("world") + suffix;
        }
    }

    ここで示した例では、hello() メソッドの message および name 文字列の値は初期化されていません。エンドポイントが呼び出され、この状態で正常に開始されると、アプリケーションは NullPointerException をスローします。

  4. messagename、および suffix フィールドを定義し、アノテーション @ConfigProperty を付け、greeting.message および greeting.name プロパティーに定義した値と一致させます。アノテーション @ConfigProperty を使用して、各文字列の設定値を注入します。以下に例を示します。

    GreetingResource.java ファイルの例

    package org.acme.config;
    
    import java.util.Optional;
    
    import jakarta.ws.rs.GET;
    import jakarta.ws.rs.Path;
    import jakarta.ws.rs.Produces;
    import jakarta.ws.rs.core.MediaType;
    
    import org.eclipse.microprofile.config.inject.ConfigProperty;
    
    @Path("/greeting")
    public class GreetingResource {
    
      @ConfigProperty(name = "greeting.message") 1
      String message;
    
      @ConfigProperty(name = "greeting.suffix", defaultValue="!") 2
      String suffix;
    
      @ConfigProperty(name = "greeting.name")
      Optional<String> name; 3
    
      @GET
      @Produces(MediaType.TEXT_PLAIN)
      public String hello() {
          return message + " " + name.orElse("world") + suffix;
       }
    }

    1
    greeting.message 文字列の値を設定しない場合、アプリケーションは失敗し、jakarta.enterprise.inject.spi.DeploymentException: io.quarkus.runtime.configuration.ConfigurationException: Failed to load config value of type class java.lang.String for: greeting.message の例外をスローします。
    2
    greeting.suffix の値を設定しないと、Quarkus はその値をデフォルト値に解決します。
    3
    greeting.name プロパティーを定義しない場合、name の値は使用できません。nameOptional パラメーターを設定しているため、この値が使用できない場合でもアプリケーションは実行されます。
    注記

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

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

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

    curl http://localhost:8080/greeting

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

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

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.