Como usar o validador no Spring Boot para implementar verificação automática de parâmetros de interface

Diretório de artigos

1. Fundo

Durante o processo de desenvolvimento do projeto, alguns campos são frequentemente verificados, como verificação de campo não vazio, verificação de comprimento de campo, etc. Se você escrever um monte de if else em todos os locais necessários, seu código se tornará redundante. É volumoso e relativamente difícil de manter. Como podemos tornar a verificação mais padronizada e elegante?

No Spring Boot, você pode usar Validation Api e Hibernate Validator para implementar a verificação automática dos parâmetros da interface.

2. Uso

1. Se a variável membro for outra entidade de objeto, a variável deverá ser adicionada ​​@Valid​​, caso contrário a verificação aninhada não terá efeito.

2. Adicionar dependências: Dependências do projeto Spring Boot, porque a validação-api e o hibernate-validator já estão incluídos no spring-boot-starter-web, portanto, nenhuma referência adicional é necessária.

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.4.5</version>
    <relativePath/>
</parent>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

O projeto Maven depende do maven

  <dependency>
        <groupId>jakarta.validation</groupId>
        <artifactId>jakarta.validation-api</artifactId>
    </dependency>

3. Primeiro, você precisa entender a função das três anotações de restrição não nulas em javax.validation: @NotNull, @NotEmpty, @NotBlank

limitação ilustrar
@Não nulo Atua em Inteiro (incluindo outras classes básicas). Após adicionar a restrição @NotNull ao atributo Inteiro, o atributo não pode ser nulo e não há restrição de tamanho; @NotNull atua em Coleção, Mapa ou objeto de coleção, e o objeto de coleção não pode ser nulo , mas pode ser um conjunto vazio, ou seja, size=0 (geralmente use restrições @NotEmpty em objetos de coleção)
@NotBlank Funciona apenas em String. Após adicionar a restrição @NotBlank ao atributo String, o atributo não pode ser nulo e tamanho> 0 após trim().
@Não está vazio @NotEmpty funciona em classes de coleção. Depois que as restrições @NotEmpty são adicionadas à Coleção, Mapa e matrizes, o objeto da coleção não pode ser nulo e não pode ser um conjunto vazio, ou seja, tamanho> 0

3. Exemplos

Classe do controlador:

public class CustomerSyncController {
    
    

    /**
     * 客户同步
     */
    @ApiOperation(value = "客户同步")
    @PostMapping(value = "/customer/sync")
    public Result<Boolean> syncCustomerInfo(@RequestBody @Valid CustomerInfoVo paramVos) {
    
    
        try {
    
    
            if (!ObjectUtils.isEmpty(paramVos)) {
    
    
                customerInfoService.syncCustomerInfo(paramVos);
            }
        } catch (Exception e) {
    
    
            e.printStackTrace();
            log.error("[syncCustomerInfo] request error,paramVos:{},异常:{}", paramVos, e.getMessage());
            return Result.error(BasicCodeMsg.SERVER_ERROR);
        }
        return Result.success(Boolean.TRUE);
    }
}

Classe de entidade:

@NoArgsConstructor
@Data
public class CustomerInfoVo implements Serializable {
    
    

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "客户id")
    @NotBlank(message = "客户ID不能为空")
    private String customerId;

    @ApiModelProperty(value = "客户姓名")
    @NotBlank(message = "客户姓名不能为空")
    private String name;

    @ApiModelProperty(value = "证件类型")
    @NotNull(message = "证件类型不能为空")
    private Integer certificateType;

    @ApiModelProperty(value = "证件号")
    @NotBlank(message = "证件号不能为空")
    private String certificate;
    }

Basta testar com o carteiro.
Insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/weixin_47061482/article/details/131958707
Recomendado
Clasificación