如何解决如何将@ConfigProperties与Converter类一起使用
我尝试实现一个自定义配置类型,并且可以正常工作。但是,当我使用@ConfigProperties
将自定义类型与一组配置一起使用时,它无法通过名称自动识别该属性,而是将该属性视为具有嵌套属性的对象。
如何正确实现这种行为? (我是Quarkus的新手,所以如果我在这里做错了,请纠正我)
public class Percentage {
private double percentage;
public Percentage() {}
public Percentage(double percentage) {
this.percentage = percentage;
}
public void setPercentage(double percentage) {
this.percentage = percentage;
}
public double getPercentage() {
return this.percentage;
}
}
@Priority(300)
public class PercentageConverter implements Converter<Percentage> {
@Override
public Percentage convert(String value) {
int percentIndex = value.indexOf("%");
return new Percentage(Double.parseDouble(value.substring(0,percentIndex - 1)));
}
}
/// this works ------
public class Hello {
@ConfigProperty(name = "custom.vat")
Percentage vat;
public Hello () {
}
// .....
}
/// however,this fails
@ConfigProperties(prefix = "custom")
public class CustomConfig {
public Percentage vat;
public Percentage profit;
}
javax.enterprise.inject.spi.DeploymentException: No config value of type [double] exists for: custom.vat.percentage
at io.quarkus.arc.runtime.ConfigRecorder.validateConfigProperties(ConfigRecorder.java:39)
解决方法
不幸的是,我相信这是行不通的,因为Quarkus @ConfigProperties将这些情况当作子组来处理,并尝试使用配置映射嵌套属性(而不使用Converter)。
如果您认为应该更改,请随时在Quarkus GH中打开一个问题:https://github.com/quarkusio/quarkus/issues
或者,您可以使用SR Config @ConfigMapping:https://smallrye.io/docs/smallrye-config/mapping/mapping.html。它涵盖了更多情况,包括直接转换,将来可能会取代Quarkus @ConfigProperties。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。