Spring Double 值的 ConfigurationProperties 验证

Spring ConfigurationProperties validation of a Double value

我有一个 属性 值,它的范围应该在 0 到 1 之间。 我喜欢 Spring 的 ConfigurationProperties 来验证 属性 值。

所以在我的 ConfigProperties class 我添加了 @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 and @Max. The same applies to @DecimalMin and @DecimalMax

的文档(明确)所述

Note that double and float are not supported due to rounding errors (some providers might provide some approximative support)

您可以改用 BigDecimalBigInteger

所以这是解决方案 :

   @DecimalMax("1.0") @DecimalMin("0.0")
    Double fraction;