Spring ConfigurationProperties проверка двойного значения

У меня есть значение свойства, которое должно быть в диапазоне от 0 до 1. Мне нравится Spring's 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 аннотация, но с теми же результатами

2 ответа

Решение

Итак, вот решение, как описано здесь:

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

Как (четко) указано в документации обоих @Min а также @Max, То же самое относится и к @DecimalMin а также @DecimalMax

Обратите внимание, что double а также float не поддерживаются из-за ошибок округления (некоторые поставщики могут предоставлять приблизительную поддержку)

Вы можете использовать BigDecimal или же BigInteger вместо.

Другие вопросы по тегам