1.11. 使用自定义配置转换器作为配置值
您可以通过实施 org.eclipse.microprofile.config.spi.Converter<T > 并将其完全限定类名称添加到 META-INF/services/org.eclipse.microprofile.config.spi.Converter 文件,将自定义类型存储为配置值。通过使用转换器,您可以将值的字符串表示转换为对象。
先决条件
您已创建了 Quarkus config-quickstart 项目。
流程
在
org.acme.config 软件包中,使用以下内容创建org.acme.config.MyCustomValue类:自定义配置值示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 实施转换器类,以覆盖转换方法来生成
MyCustomValue实例。转换类实施示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将转换器的完全限定类名称包含在
META-INF/services/org.eclipse.microprofile.config.spi.Converter服务文件中,如下例所示:org.eclipse.microprofile.config.spi.Converter文件示例org.acme.config.MyCustomValueConverter org.acme.config.SomeOtherConverter org.acme.config.YetAnotherConverter
org.acme.config.MyCustomValueConverter org.acme.config.SomeOtherConverter org.acme.config.YetAnotherConverterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在
GreetingResource.java文件中,注入MyCustomValue属性:@ConfigProperty(name="custom") MyCustomValue value;@ConfigProperty(name="custom") MyCustomValue value;Copy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
hello方法以使用此值:@GET @Produces(MediaType.TEXT_PLAIN) public String hello() { return message + " " + name.orElse("world") + " - " + value.value(); }@GET @Produces(MediaType.TEXT_PLAIN) public String hello() { return message + " " + name.orElse("world") + " - " + value.value(); }Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
application.properties文件中,添加要转换的字符串表示:custom=1234
custom=1234Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要以开发模式编译并启动应用程序,请输入以下命令:
./mvnw quarkus:dev
./mvnw quarkus:devCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要验证
/greeting端点是否返回预期的消息,请打开终端窗口并输入以下命令:请求示例
curl http://localhost:8080/greeting
curl http://localhost:8080/greetingCopy to Clipboard Copied! Toggle word wrap Toggle overflow 当应用程序成功读取自定义配置时,命令会返回以下响应:
hello world - 1234
hello world - 1234Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您的自定义转换器类必须
是公共的转换器,且必须有一个公共的非参数构造器。您的自定义转换器类无法抽象。
1.11.1. 设置自定义转换器优先级 复制链接链接已复制到粘贴板!
所有 Quarkus 核心转换器的默认优先级都是 200。对于所有其他转换器,默认优先级为 100。您可以使用 jakarta.annotation.Priority 注解来增加自定义转换器的优先级。
以下流程演示了自定义转换器 AnotherCustomValueConverter 的实现,其优先级为 150。这优先于上一节中的 MyCustomValueConverter,其默认优先级为 100。
先决条件
-
您已创建了 Quarkus
config-quickstart项目。 - 您已为应用程序创建了自定义配置转换器。
流程
通过使用
@Priority注释注解类并传递优先级值,为您的自定义转换器设置优先级。在以下示例中,优先级值设为150。AnotherCustomValueConverter.java文件示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在项目的
src/main/resources/META-INF/services/子目录下,创建名为org.eclipse.microprofile.config.spi.Converter的文件,并在您创建的文件中输入实施Converter的完全限定名称:org.eclipse.microprofile.config.spi.Converter文件示例org.acme.config.AnotherCustomValueConverter
org.acme.config.AnotherCustomValueConverterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您必须完成上一步,以确保在编译和启动应用程序时注册并安装了您创建的
Converter。
验证
完成所需的配置后,下一步是编译并打包 Quarkus 应用程序。如需更多信息和示例,请参阅 Getting started with Quarkus 指南中的编译和打包部分。