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)
您可以改用 BigDecimal
或 BigInteger
。
所以这是解决方案 :
@DecimalMax("1.0") @DecimalMin("0.0")
Double fraction;
我有一个 属性 值,它的范围应该在 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
andfloat
are not supported due to rounding errors (some providers might provide some approximative support)
您可以改用 BigDecimal
或 BigInteger
。
所以这是解决方案
@DecimalMax("1.0") @DecimalMin("0.0")
Double fraction;