代码之家  ›  专栏  ›  技术社区  ›  riorio

弹簧配置特性双值验证

  •  1
  • riorio  · 技术社区  · 6 年前

    我的属性值应该在0和1之间。 我喜欢春天的 ConfigurationProperties 验证属性值。

    所以在我的 ConfigProperties 第一节增加了 @Validated 注释并写下:

    @Min(0)
    @Max(1)
    Double fraction;
    

    奇怪的是验证的工作方式看起来像 flooring / roofing 属性文件中的值。

    这是我在conf文件中输入的不同值的结果:

    fraction=-2.1 ->弹簧报告错误并停止(好!)

    fraction=2.1 ->弹簧报告错误并停止(好!)

    fraction=-1.5 ->弹簧不报告错误并启动(不好!)

    fraction=1.5 ->弹簧不报告错误并启动(不好!)

    我也试过用 @Range 注释,但结果相同

    2 回复  |  直到 6 年前
        1
  •  2
  •   riorio    6 年前

    所以这是解决方案 as described here :

       @DecimalMax("1.0") @DecimalMin("0.0")
        Double fraction;
    
        2
  •  0
  •   M. Deinum    6 年前

    如双方文件所述 @Min @Max . 同样适用于 @DecimalMin @DecimalMax

    注意 double float 由于舍入错误而不受支持(某些提供程序可能提供一些近似支持)

    您可以使用 BigDecimal BigInteger 相反。

    推荐文章