【发布时间】:2018-09-04 06:50:12
【问题描述】:
我有一个介于 0 和 1 之间的属性值。
我喜欢 Spring 的 ConfigurationProperties 来验证属性值。
所以在我的ConfigProperties 类中,我添加了@Validated 注释并写了这个:
@Min(0)
@Max(1)
Double fraction;
奇怪的是,验证的工作方式类似于 flooring / roofing 属性文件中的值。
这是我在 conf 文件中放入不同值的结果:
fraction=-2.1 -> Spring 报错并停止(好!)
fraction=2.1 -> Spring 报错并停止(好!)
fraction=-1.5 -> Spring 不报错就启动了(不好!)
fraction=1.5 -> Spring 不报错就启动了(不好!)
我也尝试使用 @Range 注释,但结果相同
【问题讨论】:
-
@Min和@Max适用于整数而不是双精度数。因此 1.5 被转换为 int 并将导致 1 而不是 2.... 即使 1.5 将被舍入为 2 它仍然会失败,例如 1.13 等值。
标签: spring-boot configurationproperties