[JAVA] Spring's Bean Validaiton ~ Bean Bari Deshon ~

Bean Validation

Un exemple basé sur la communication REST à l'aide de Spring Framework est décrit.

Qu'est-ce que Bianbari?

Vérifiez la valeur de RequestBody envoyée par le client. Il existe plusieurs types de contenu de chèque.

etc...

Échantillon pour le moment

Un échantillon qui effectue juste une validation sur le contrôleur.

SampleContorller.java


@RestController
@RequestMapping("validation")
public class SampleController {

  //Validez simplement
  @PostMapping
  public SampleResource validation(
        @RequestBody @Validated SampleResource resource) {
    return resource;
  }
}
@Getter
@Setter
public class SampleResource {
  @NotNull
  @Size(min = 5, max = 30)
  @Pattern(regexp = "[a-zA-Z0-9]*")
  private String message;
}
Annotation La description
@NotNull Interdire Null
@Size {min}c'est tout{max}Sois sûr que
@Pattern Confirmez qu'il s'agit du modèle spécifié

plus de validation Bean

Validation des classes imbriquées

Spécifiez «@ Valid» dans le champ.

SampleContorller.java


Avec le contrôleur d'échantillons ci-dessus
@Getter
@Setter
public class SampleResource {
  @Valid
  @NotNull
  private SampleNestResource nestResource;
}

Vous validez une classe imbriquée avec @Valid. Si nestResource n'est pas envoyé, Null sera lié au champ et la validation spécifiée dans SampleNestResource ne sera pas exécutée, elle est donc requise par @NotNull.

@Getter
@Setter
public class SampleNestResource {
  @NotNull
  @Size(min = 5, max = 30)
  @Pattern(regexp = "[a-zA-Z0-9]*")
  private String message;
}

Archiver la collection

Lorsque «Collection» comme «List» est spécifié dans le champ, la spécification de validation de la classe sans «Collection» et la spécification de validation pour le champ sont différentes.

SampleContorller.java


Avec le contrôleur d'échantillons ci-dessus
@Getter
@Setter
public class SampleResource {
  
  @Size(min = 2)
  private List<@NotNull String> strList;
}

Vérifiez si l'élément List du champ est égal ou supérieur à 2 avec @Size Assurez-vous que String in List n'est pas nul avec @NotNull

Traitement des erreurs de validation

Si aucune manipulation n'est effectuée, MethodArgumentNotValidException se produira. Dans RestController, il n'y a pas d'erreur dans BindingResult, donc obtenez le contenu de l'erreur avec des erreurs.

SampleContorller.java


@RestController
@RequestMapping("validation")
public class SampleController {

  //Validez simplement
  @PostMapping
  public SampleResource validation(
        @RequestBody @Validated SampleResource resource,
        Errors errors) {
    if (errors.hasErrors()){
      throw new RuntimeException();
    }

    return resource;
  }
}

Recommended Posts

Spring's Bean Validaiton ~ Bean Bari Deshon ~
Cycle de vie du haricot de printemps
Appeler Spring Management Bean de Pojo