1.5. 将配置值注入您的红帽构建的 Quarkus 应用程序
红帽构建的 Quarkus 使用 MicroProfile 功能的配置将配置数据注入应用。您可以使用上下文和依赖项注入(CDI)或代码中定义方法来访问配置。
注入配置值的首选选项是使用 @ConfigMapping 注释,但您也可以使用 @ConfigProperty 注释。
使用 @ConfigProperty 注释,您可以将对象属性映射到应用的 MicroProfile Config Sources 文件中的键。
以下流程和示例演示了如何使用红帽构建 Quarkus Application 配置文件 application.properties 将单个属性配置注入 Quarkus config-quickstart 项目。
就像 application. properties 文件一样,您可以使用 MicroProfile 配置属性文件(src/main/resources/META-INF/microprofile-config.properties)。
但是,使用 application.properties 是首选的方法。
先决条件
您已创建了 Quarkus config-quickstart 项目。
对于该项目的完整示例,请下载 Quarkus Quickstarts 存档或克隆 Quarkus Quickstarts Git 存储库,再进入 config-quickstart 目录。
流程
-
打开
src/main/resources/application.properties文件。 在您的配置文件中添加配置属性,其中 <
;property_name> 是属性名称,<value> 是属性值:<property_name>=<value>
<property_name>=<value>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下示例演示了如何在 Quarkus
config-quickstart项目中设置greeting.message和greeting.name属性的值:application.properties文件示例greeting.message=hello greeting.name=quarkus
greeting.message=hello greeting.name=quarkusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要当您配置应用程序时,请不要使用字符串
quarkus前缀应用程序特定属性。quarkus前缀用于在框架级别配置 Quarkus。使用quarkus作为特定应用程序属性的前缀可能会导致应用程序运行时出现意外的结果。查看项目中的
GreetingResource.javaJava 文件。该文件包含带有hello ()方法的GreetingResource类,它会在/greeting端点上发送 HTTP 请求时返回一条消息:GreetingResource.java文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在提供的示例中,
hello ()方法中消息和名称字符串的值不会被初始化。当端点被调用时,应用会抛出NullPointerException,并成功在此状态启动。定义
消息、name和suffix字段,并使用@ConfigProperty为它们添加注解,这与您为greeting.message和 greeting.name 属性定义的值匹配。使用@ConfigProperty注释来注入每个字符串的配置值。例如:GreetingResource.java文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果您没有为
greeting.message字符串配置值,应用程序会失败并抛出以下异常:jakarta.enterprise.inject.spi.DeploymentException: io.quarkus.runtime.configuration.ConfigurationException: Failed to load config value of type java.lang.String for: greeting.message - 2
- 如果没有为
greeting.suffix配置值,Quarkus 会将它解析为默认值。 - 3
- 如果没有定义
greeting.name属性,则name的值不可用。即使这个值不可用,应用程序仍然在运行,因为您在名称上设置Optional参数。
注意要注入配置的值,您可以使用
@ConfigProperty。您不需要为使用@ConfigProperty标注的成员包含@Inject注释。
在开发模式下编译并启动应用程序:
./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。