【问题标题】:Spring SpEL: how to base the value of one property on anotherSpring SpEL:如何将一个属性的值基于另一个属性
【发布时间】:2020-08-25 12:34:16
【问题描述】:

我想在 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

这是可以做到的吗?

【问题讨论】:

    标签: spring spring-el


    【解决方案1】:

    使用

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

    【讨论】:

    • 结果还是0.77(所以忽略了main.propertyOne的值)
    • 否;我测试了它;将 propertyOne 设置为.23,我得到0.33
    猜你喜欢
    • 2020-03-02
    • 2014-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-21
    • 1970-01-01
    相关资源
    最近更新 更多