1.8. 以编程方式访问配置
您可以在代码中定义一个方法,以检索应用程序中的配置属性值。这样,您可以动态查找配置属性值,或者从 CDI Bean 或 Jakarta REST (以前称为 JAX-RS)资源的类中检索配置属性值。
您可以使用 org.eclipse.microprofile.config.ConfigProvider.getConfig () 方法来访问配置。config 对象的 getValue () 方法返回配置属性的值。
先决条件
- 您有一个 Quarkus Maven 项目。
流程
使用方法访问应用程序代码中任何类或对象的 configuration 属性的值。根据您要检索的值是否在项目中的配置源中设置,您可以使用以下方法之一:
要访问项目中配置源中设置的属性值,例如在
application.properties文件中,使用getValue ()方法:String <variable-name> = ConfigProvider.getConfig().getValue("<property-name>", <data-type-class-name>.class);例如,要检索数据类型为
String的greeting.message属性的值,并分配给代码中的消息变量,请使用以下语法:String message = ConfigProvider.getConfig().getValue("greeting.message",String.class);当您想检索一个可选或默认值的值,且可能无法在
application.properties文件中定义,或使用getOptionalValue ()方法:Optional<String> <variable-name> = ConfigProvider.getConfig().getOptionalValue("<property-name>", <data-type-class-name>.class);例如,要检索可选的
greeting.name属性的值,且具有数据类型String,并分配给代码中name变量,请使用以下语法:Optional<String> name = ConfigProvider.getConfig().getOptionalValue("greeting.name", String.class);
以下片段演示了上述使用编程访问配置的 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;
}
}