[英]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.