4.2. 使用嵌套对象配置


您可以在现有类中定义嵌套类。此流程演示了如何在 Quarkus config-quickstart 项目中创建嵌套类配置。

先决条件

  • 您已创建了 Quarkus 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;
    Copy to Clipboard Toggle word wrap

  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;
    }
    Copy to Clipboard Toggle word wrap

  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;
        }
    }
    Copy to Clipboard Toggle word wrap

    本例显示了一个嵌套类 ContentConfig。字段的名称(本例中为 content )决定了绑定到对象的属性的名称。

  4. application.properties 文件中设置 greeting.content.prize-amountgreeting.content.recipients 配置属性。

    以下示例显示了 GreetingConfigurationContentConfig 类的属性值:

    src/main/resources/application.properties

    greeting.message = hello
    greeting.name = quarkus
    greeting.content.prize-amount=10
    greeting.content.recipients=Jane,John
    Copy to Clipboard Toggle word wrap

  5. 使用 @Inject 注解将 GreetingConfiguration 类注入 GreetingResource 类,并更新 /greeting 端点返回的消息字符串,显示您为新 greeting.content.prize-amountgreeting.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;
        }
    }
    Copy to Clipboard Toggle word wrap

  6. 以开发模式编译并启动应用程序:

    ./mvnw quarkus:dev
    Copy to Clipboard Toggle word wrap
    重要

    如果没有为类属性提供值,应用程序无法编译,您会收到 javax.enterprise.inject.spi.DeploymentException,它表示缺失的值。这不适用于带有 默认值的 Optional 字段和字段。

  7. 在新终端窗口中输入以下命令来验证端点是否返回消息:

    curl http://localhost:8080/greeting
    Copy to Clipboard Toggle word wrap
  8. 您会收到一条信息,其中包含第一行上的问候以及第二行上的原概量:

    hello quarkus!
    Jane,John receive total of candies: 10
    Copy to Clipboard Toggle word wrap
  9. CTRL+C 停止应用程序。
注意

使用 @ConfigProperties 注解的类可以使用与以下示例类似的 Bean Validation 注解添加注解:

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

    @Size(min = 20)
    public String message;
    public String suffix = "!";
}
Copy to Clipboard Toggle word wrap

您的项目必须包含 quarkus-hibernate-validator 依赖项。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat