第 4 章 将配置值注入 Quarkus 应用程序
红帽构建的 Quarkus 使用 MicroProfile Config 功能 将配置数据注入应用程序中。您可以通过上下文和依赖项注入(CDI)或使用代码中定义的方法访问配置。
您可以使用 @ConfigProperty 注释将对象属性映射到应用的 MicroProfile ConfigSources 文件中的键。此流程演示了如何将单个属性配置注入 Quarkus config-quickstart 项目中。
先决条件
-
您已创建了 Quarkus
config-quickstart项目。
流程
-
打开
src/main/resources/application.properties文件。 在您的配置文件中添加配置属性,其中 <
;key> 是属性名称,<value> 是属性值:<key>=<value>
<key>=<value>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下示例演示了如何为 Quarkus
config-quickstart项目中的greeting.message和greeting.name属性设置值:src/main/resources/application.properties
greeting.message = hello greeting.name = quarkus
greeting.message = hello greeting.name = quarkusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要使用
Quarkus作为 Quarkus 属性的前缀。查看
GreetingResource.java文件,并确保它包括以下导入语句:import org.eclipse.microprofile.config.inject.ConfigProperty; import java.util.Optional;
import org.eclipse.microprofile.config.inject.ConfigProperty; import java.util.Optional;Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过使用
@ConfigProperty注解它们来定义对应的属性,如下例所示:src/main/java/org/acme/config/GreetingResource.java
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意要注入配置的值,您可以使用
@ConfigProperty。使用@ConfigProperty注解的成员不需要@Inject注释。编辑
hello方法以返回以下信息:src/main/java/org/acme/config/GreetingResource.java
@GET @Produces(MediaType.TEXT_PLAIN) public String hello() { return message + " " + name.orElse("world") + suffix; }@GET @Produces(MediaType.TEXT_PLAIN) public String hello() { return message + " " + name.orElse("world") + suffix; }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以开发模式编译并启动应用程序:
./mvnw quarkus:dev
./mvnw quarkus:devCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在新终端窗口中输入以下命令来验证端点是否返回消息:
curl http://localhost:8080/greeting
curl http://localhost:8080/greetingCopy to Clipboard Copied! Toggle word wrap Toggle overflow 这个命令返回以下输出:
hello quarkus!
hello quarkus!Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 按 CTRL+C 停止应用程序。
4.1. 使用 @ConfigProperties 注解类 复制链接链接已复制到粘贴板!
作为单独注入多个相关配置值的替代选择,您可以使用 @io.quarkus.arc.config.ConfigProperties 注解来对组配置属性使用。以下流程演示了在 Quarkus config-quickstart 项目中使用 @ConfigProperties 注释。
先决条件
-
您已创建了 Quarkus
config-quickstart项目。
流程
查看
GreetingResource.java文件,并确保它包括以下导入语句:src/main/java/org/acme/config/GreetingResource.java
import java.util.Optional; import javax.inject.Inject;
import java.util.Optional; import javax.inject.Inject;Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
在
src/main/java/org/acme/config目录中创建一个文件GreetingConfiguration.java。 将
ConfigProperties和Optional导入添加到GreetingConfiguration.java文件中:src/main/java/org/acme/config/GreetingConfiguration.java
import io.quarkus.arc.config.ConfigProperties; import java.util.Optional; import javax.inject.Inject;
import io.quarkus.arc.config.ConfigProperties; import java.util.Optional; import javax.inject.Inject;Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为
文件中的GreetingConfiguration.java问候属性创建一个 GreetingConfiguration 类:src/main/java/org/acme/config/GreetingConfiguration.java
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
@Inject注解将GreetingConfiguration类注入GreetingResource类:src/main/java/org/acme/config/GreetingResource.java
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以开发模式编译并启动应用程序:
./mvnw quarkus:dev
./mvnw quarkus:devCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要如果没有为类属性提供值,应用程序无法编译,您会收到
javax.enterprise.inject.spi.DeploymentException,它表示缺失的值。这不适用于带有默认值的Optional 字段和字段。在新终端窗口中输入以下命令来验证端点是否返回消息:
curl http://localhost:8080/greeting
curl http://localhost:8080/greetingCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您会收到以下信息:
hello quarkus!
hello quarkus!Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 按 CTRL+C 停止应用程序。