问题描述
我想在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)}}")