4.3. 使用 @ConfigProperties 注解接口


管理属性的替代方法是将它们定义为接口。如果您使用 @ConfigProperties 注解接口,接口可以扩展其他接口,您可以使用整个接口层次结构中的方法绑定属性。

此流程演示了 GreetingConfiguration 类的实现作为 Quarkus config-quickstart 项目中的接口。

先决条件

  • 您已创建了 Quarkus config-quickstart 项目。

流程

  1. 查看 GreetingConfiguration.java 文件,并确保它包括以下导入语句:

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

    import io.quarkus.arc.config.ConfigProperties;
    import org.eclipse.microprofile.config.inject.ConfigProperty;
    import java.util.Optional;
    Copy to Clipboard Toggle word wrap

  2. GreetingConfiguration 类作为接口添加到 GreetingConfiguration.java 文件中:

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

    @ConfigProperties(prefix = "greeting")
    public interface GreetingConfiguration {
    
        @ConfigProperty(name = "message") 
    1
    
        String message();
    
        @ConfigProperty(defaultValue = "!")
        String getSuffix(); 
    2
    
    
        Optional<String> getName(); 
    3
    
    }
    Copy to Clipboard Toggle word wrap

    1
    您必须设置 @ConfigProperty 注释,因为配置属性的名称不遵循 getter 方法命名约定。
    2
    在本例中,没有设置 name,因此对应的属性将为 greeting.suffix
    3
    您不需要指定 @ConfigProperty 注释,因为方法名称遵循 getter 方法命名约定(greeting.name 作为对应属性),且不需要默认值。
  3. 使用 @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.message() + " " + config.getName().orElse("world") + config.getSuffix();
        }
    }
    Copy to Clipboard Toggle word wrap

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

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

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

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

    curl http://localhost:8080/greeting
    Copy to Clipboard Toggle word wrap
  6. 您会收到以下信息:

    hello quarkus!
    Copy to Clipboard Toggle word wrap
  7. CTRL+C 停止应用程序。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat