4.2. ネストされたオブジェクト設定の使用


既存のクラス内でネストされたクラスを定義できます。この手順では、config-quickstart プロジェクトでネストされたクラスの設定を作成する方法を説明します。

前提条件

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

手順

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

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

    import io.quarkus.arc.config.ConfigProperties;
    import java.util.Optional;
    import java.util.List;

  2. @ConfigProperties アノテーションを使用して、GreetingConfiguration.java ファイルに設定を追加します。

    次の例は、GreetingConfiguration クラスとそのプロパティーの設定を示しています。

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

    @ConfigProperties(prefix = "greeting")
    public class GreetingConfiguration {
    
        public String message;
        public String suffix = "!";
        public Optional<String> name;
    }

  3. 次の例に示すように、GreetingConfiguration クラス内にネストされたクラスを追加します。

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

    @ConfigProperties(prefix = "greeting")
    public class GreetingConfiguration {
    
        public String message;
        public String suffix = "!";
        public Optional<String> name;
        public ContentConfig content;
    
        public static class ContentConfig {
            public Integer prizeAmount;
            public List<String> recipients;
        }
    }

    この例は、ネストされたクラス ContentConfig を示しています。フィールドの名前 (ここでは content) が、オブジェクトにバインドされるプロパティーの名前を決定します。

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

  5. @Inject アノテーションを使用して GreetingConfiguration クラスを GreetingResource クラスに注入し、/greeting エンドポイントが返すメッセージ文字列を更新し、追加した新しい greeting.content.prize-amount プロパティーおよび greeting.content.recipients プロパティーに設定した値をメッセージに表示させます。

    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.message + " " + config.name.orElse("world") + config.suffix + "\n" + config.content.recipients + " receive total of candies: " + config.content.prizeAmount;
        }
    }

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

    ./mvnw quarkus:dev
    重要

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

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

    curl http://localhost:8080/greeting
  8. 1 行目に挨拶、2 行目に賞金の受賞者と賞金額が書かれたメッセージを受信します。

    hello quarkus!
    Jane,John receive total of candies: 10
  9. アプリケーションを停止するには、CTRL+C を押します。
注記

@ConfigProperties のアノテーションが付けられたクラスは、以下に示す例のような Bean Validation のアノテーションを付けることができます。

@ConfigProperties(prefix = "greeting")
public class GreetingConfiguration {

    @Size(min = 20)
    public String message;
    public String suffix = "!";
}

プロジェクトには quarkus-hibernate-validator 依存関係が含まれている必要があります。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.