2
votes

Validation Spring Boot: obtenir la taille maximale du fichier de propriétés

J'ai un serveur Spring Boot et j'aimerais valider mes valeurs d'ici le printemps. En utilisant la validation @Size, je peux définir la taille maximale. Mais j'aimerais obtenir cette taille maximale de mon fichier application.property.

J'ai déjà essayé de charger cette valeur par "@Value (...)" mais je ne peux pas utiliser cette valeur dans le "@Size" champ.

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

@Size(max = 10)
private String description;


1 commentaires

Pouvez-vous rendre plus précis, fournir plus de détails.


3 Réponses :


0
votes

vous pouvez le faire comme ce post par réflexion java https: // www .baeldung.com / java-reflexion-change-annotation-params


1 commentaires

Je ne pense pas que cela fonctionnera. L'annotation ne sera pas évaluée à chaque appel.



0
votes

Cela n'est pas possible car les annotations nécessitent des expressions constantes ( static final ) et @Value ne peut pas être utilisé pour injecter des valeurs dans des champs finaux statiques.

Peut-être que ce projet pourrait vous aider: https://github.com/jirutka/validator-spring . Il vous permet d'utiliser Spring Expression Language avec la validation de bean.


0 commentaires

0
votes

Nous pouvons spécifier des contraintes par programmation en utilisant Hibernate Validator , qui est déjà disponible dans le chemin des classes lors de l'utilisation de spring-boot-starter-web.

Given:

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

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

if (constraintViolations.size() > 0) {
   ... // handle constraint violations
}

Nous pouvons configurer des contraintes comme celle-ci:

@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 ) );

et valider une instance de l'objet avec:

 class MyObject {
     private String description;
     ...
 }


0 commentaires