第 10 章 使用自定义配置转换器作为配置值
您可以通过实施 org.eclipse.microprofile.config.spi.Converter<T>,并将它完全限定类名称添加到 META-INF/services/org.eclipse.microprofile.config.spi.Converter 文件中。
先决条件
-
您已创建了 Quarkus
config-quickstart项目。
流程
在您的
META-INF/services/org.eclipse.microprofile.config.spi.Converter服务文件中包含转换器的完全限定类名称,如下例所示:org.acme.config.MicroProfileCustomValueConverter org.acme.config.SomeOtherConverter org.acme.config.YetAnotherConverter
org.acme.config.MicroProfileCustomValueConverter org.acme.config.SomeOtherConverter org.acme.config.YetAnotherConverterCopy to Clipboard Copied! Toggle word wrap Toggle overflow 实现转换器类来覆盖转换方法:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您的自定义转换器类必须
是公共的,且必须具有公共no-argument 构造器。您的自定义转换器类无法抽象。使用您的自定义类型作为配置值:
@ConfigProperty(name = "configuration.value.name") MicroProfileCustomValue value;
@ConfigProperty(name = "configuration.value.name") MicroProfileCustomValue value;Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.1. 设置自定义转换器优先级 复制链接链接已复制到粘贴板!
所有 Quarkus 内核转换器的默认优先级为 200,所有其他转换器则设为 100。但是,您可以使用 javax.annotation.Priority 注解为您的自定义转换器设置更高的优先级。
以下流程演示了一个自定义转换器 MicroProfileCustomValue 的实施,其优先级为 150,其优先级将优先于 MicroProfileCustomValueConverter,其值为 100。
先决条件
-
您已创建了 Quarkus
config-quickstart项目。
流程
在您的服务文件中添加以下导入语句:
package org.acme.config; import javax.annotation.Priority; import org.eclipse.microprofile.config.spi.Converter;
package org.acme.config; import javax.annotation.Priority; import org.eclipse.microprofile.config.spi.Converter;Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过为自定义转换器添加带有
@Priority注解的类并传递优先级值,为您的自定义转换器设置优先级:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果添加新的转换器,您必须在
META-INF/services/org.eclipse.microprofile.config.spi.Converter服务文件中列出它。