[英]Quarkus converter for microprofile configMapping not giving full object
我有以下配置:
my:
filter:
number-range:
- range:
from: +994700110000
to: +994700110002
配置映射是:
@ConfigMapping(prefix = "my.filter")
public interface SmsGatewayFilterListConfig {
List<RangeWrapper> numberRange();
}
與pojos:
public record RangeWrapper(Range range) {
}
public record Range(String from,
String to) {
}
還有我的轉換器(在META-INF/services/org.eclipse.microprofile.config.spi.Converter
中注冊):
import org.eclipse.microprofile.config.spi.Converter;
import org.yaml.snakeyaml.Yaml;
public class RangeWrapperConverter implements Converter<RangeWrapper> {
@Override
public RangeWrapper convert(String s) throws IllegalArgumentException, NullPointerException {
System.out.println("Got: " + s);
return new Yaml().loadAs(s, RangeWrapper.class);
}
}
我有quarkus-config-yaml
依賴集,並且正在使用 application.yml
當我嘗試啟動我的 quarkus 應用程序時,我遇到了解析問題,因為傳遞給我的轉換器的字符串是:
{"number-range": [{"range": {"from": "+994700110000"
這似乎以某種方式采用 json 格式,即使這樣也沒有提供我的 yaml 的全部內容。 請問有什么問題嗎?
我的建議是使用以下映射策略:
@ConfigMapping(prefix = "my.filter")
interface RangesMapping {
List<Ranges> numberRange();
interface Ranges {
Range range();
interface Range {
String from();
String to();
}
}
}
這不需要任何特定的Converter
。 一切都會自動為您處理。
您當前看到的是提供父屬性my.filter
樹的值的遺留功能,因此用戶可以使用轉換器,因為沒有對List
或Map
的自動轉換支持。 不再是這種情況,並且此類屬性值將被刪除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.