正在从application.yml Spring boot读取货币金额



我正试图从application.yml加载一个货币金额,该金额具有Currency和amount,如:

financeAmt:
value: 10000
currency: EUR

我想使用java Money API(javax.money(或其任何实现,例如org.javamoney.moneta.Money

但是Spring引导无法加载";财务金额;使用@ConfigurationProperties它正在将其设置为null。

如果我创建一个具有vale和currency属性的自定义类,效果会很好。

任何关于如何在不创建自定义类和使用javamoneyapi的情况下加载这些money值的帮助。

Spring Boot不知道如何将String转换为org.javamoney.moneta.Money。如果你没有绑定到格式,你可以提供一个@ConfigurationPropertiesBinding,并使用一个配置设置,如:

financeAmt:
value: EUR 10000
import org.javamoney.moneta.Money;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.ConfigurationPropertiesBinding;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties("finance-amt")
public class FinanceAmtConfig {
private Money value;
public Money getValue() {
return value;
}
public void setValue(Money value) {
this.value = value;
}
}
@Component
@ConfigurationPropertiesBinding
class MoneyConverter implements Converter<String, Money> {
@Override
public Money convert(String source) {
// Needs some error handling....
return Money.parse(source);
}
}

或者,如果您绑定到配置格式,您可以只读取基元值,例如StringBigDecimal,并显式构建Money实例。

最新更新