微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spring SpEL:如何将一个属性的值基于另一个属性

如何解决Spring SpEL:如何将一个属性的值基于另一个属性

我想在Spring Boot应用程序中设置2个属性的值,其中第二个属性严格基于第一个属性

@Value("${main.propertyOne: 0.67}")
 void setPropertyOne(float propertyOne) {
    this.propertyOne = propertyOne;
 }

@Value("#{${main.propertyTwo:(${main.propertyOne: 0.67} + 0.10)}}")
 void setPropertyTwo(float propertyTwo) {
     this.propertyTwo = propertyTwo;
 }

通过这种方法propertyOne始终正确设置为认值(0.67)或我在属性文件中设置的认值,但是propertyTwo还是我在属性文件中设置的值。属性文件(可以)或0.77。实际上,它实际上从未基于propertyOne的值。

我想要的行为是:

  • 如果propertyOne设置为0.48,而propertyTwo未设置,则认为0.48 + 0.10 = 0.58
  • 如果未设置propertyOne,则认值为0.67,propertyTwo认为0.67 + 0.10 = 0.77

这是可以做的吗?

解决方法

使用

@Value("#{${main.propertyTwo:(T(Float).parseFloat('${main.propertyOne: 0.67}') + 0.10)}}")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。