1.13. 使用自定义配置转换器作为配置值
您可以通过实施 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 -
将转换器的完全限定类名称
org.acme.config.MyCustomValueConverter添加至您的META-INF/services/org.eclipse.microprofile.config.spi.Converter服务文件。 在
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 注意您的自定义转换器类必须
是公共的,且必须有一个公共的 no-argument 构造器。您的自定义转换器类不能抽象。
1.13.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.Converterfileorg.acme.config.AnotherCustomValueConverter
org.acme.config.AnotherCustomValueConverterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您必须完成上一步,以确保在编译和启动应用程序时注册并安装您创建的
Converter。
验证
完成所需的配置后,下一步是编译并打包您的 Quarkus 应用程序。如需更多信息和示例,请参阅 Getting started with Quarkus 指南中的 compiling and packaging 部分。