1.7. 以编程方式访问配置


您可以在代码中定义方法,以检索应用中的配置属性值。这样,您可以动态查找配置属性值,或者从 CDI Bean 或 Jakarta REST (以前称为 JAX-RS)资源的类中检索配置属性值。

您可以使用 org.eclipse.microprofile.config.ConfigProvider.getConfig () 方法访问配置。config 对象的 getValue () 方法返回配置属性的值。

先决条件

  • 您有一个 Quarkus Maven 项目。

流程

  • 使用方法访问应用程序代码中任何类或对象的配置属性值。根据您要检索的值是否在项目中的配置源中设置,您可以使用以下方法之一:

    • 要访问项目中配置源中设置的属性值,例如在 application.properties 文件中,使用 getValue () 方法:

      String <variable-name> = ConfigProvider.getConfig().getValue("<property-name>", <data-type-class-name>.class);
      Copy to Clipboard Toggle word wrap

      例如,要检索带有数据类型 Stringgreeting.message 属性的值,并分配给代码中的 message 变量,请使用以下语法:

      String message = config.getValue("greeting.message", String.class);
      Copy to Clipboard Toggle word wrap
    • 当您要检索是可选的或默认值,且可能没有在应用程序的 application.properties 文件或其他配置源中定义时,请使用 getOptionalValue () 方法:

      String <variable-name> = ConfigProvider.getConfig().getOptionalValue("<property-name>", <data-type-class-name>.class);
      Copy to Clipboard Toggle word wrap

      例如,要检索 greeting.name 属性的值,它是可选的,具有数据类型 String,并分配给代码中的 name 变量,请使用以下语法:

      Optional<String> name = config.getOptionalValue("greeting.name", String.class);
      Copy to Clipboard Toggle word wrap

以下片段显示了使用 programmatic 访问配置,使用上述 GreetingResource 类的变体:

src/main/java/org/acme/config/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.Config;
import org.eclipse.microprofile.config.ConfigProvider;
import org.eclipse.microprofile.config.inject.ConfigProperty;

@Path("/greeting")
public class GreetingResource {

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String hello() {
        Config config = ConfigProvider.getConfig();
        String message = config.getValue("greeting.message", String.class);
        String suffix = config.getOptionalValue("greeting.suffix", String.class).orElse("!");
        Optional<String> name = config.getOptionalValue("greeting.name", String.class);


        return message + " " + name.orElse("world") + suffix;
    }
}
Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat