Проверка Spring Boot: получить максимальный размер из файла свойств - PullRequest
0 голосов
/ 20 мая 2019

У меня есть весенний загрузочный сервер, и я хочу проверить свои значения весной.Используя проверку @Size, я могу установить максимальный размер.Но я хотел бы получить этот максимальный размер из моего файла application.property.

Я уже пытался загрузить это значение с помощью "@Value (...)", но я не могу использовать это значение в "@Size "поле.

 @Value("${max.size.in.properties}")
 private int MAX_SIZE;

@Size(max = 10)
private String description;

Ответы [ 3 ]

0 голосов
/ 20 мая 2019

Это невозможно, поскольку для аннотаций требуются постоянные выражения (static final), а @Value нельзя использовать для ввода значений в статические конечные поля.

Возможно, этот проект может вам помочь: https://github.com/jirutka/validator-spring. Позволяет использовать Spring Expression Language вместе с проверкой бина.

0 голосов
/ 20 мая 2019

Мы можем программно указать ограничения , используя Hibernate Validator , который уже доступен в classpath при использовании spring-boot-starter-web.

Дано:

 class MyObject {
     private String description;
     ...
 }

Мы можем установить ограничения следующим образом:

@Value("${max.size.in.properties}")
private int MAX_SIZE;

HibernateValidatorConfiguration configuration = Validation
                .byProvider( HibernateValidator.class )
                .configure();
ConstraintMapping constraintMapping = configuration.createConstraintMapping();

constraintMapping.type( MyObject.class )
                 .property( "description", FIELD )
                 .constraint( new SizeDef().min( 1 ).max( MAX_SIZE ) );

и проверить экземпляр объекта с помощью:

Validator validator = configuration.addMapping( constraintMapping )
                      .buildValidatorFactory()
                      .getValidator();

Set<ConstraintViolation<MyObject>> constraintViolations =
    validator.validate( myObjectInstance );

if (constraintViolations.size() > 0) {
   ... // handle constraint violations
}
0 голосов
/ 20 мая 2019

Вы можете сделать это, как этот пост за отражение Java https://www.baeldung.com/java-reflection-change-annotation-params

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...