Spring ConfigurationProperties проверка двойного значения - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть значение свойства, которое должно быть в диапазоне от 0 до 1. Мне нравится ConfigurationProperties Spring для проверки значения свойства.

Итак, в моем классе 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 ]

0 голосов
/ 04 сентября 2018

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

   @DecimalMax("1.0") @DecimalMin("0.0")
    Double fraction;
0 голосов
/ 04 сентября 2018

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

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

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

...