34 - Anotações para validações

Olá pessoal! Nesta aula vamos aprender como validar os dados que chegam até nossa API.

Para garantir que as informações enviadas estejam corretas e completas, utilizamos anotações de validação. Essas anotações são aplicadas diretamente sobre os atributos da nossa classe de modelo e ajudam a evitar problemas como campos vazios, formatos inválidos ou valores inconsistentes.

Com o uso da dependência spring-boot-starter-validation, temos acesso a diversas anotações que simplificam esse processo. A seguir, você confere uma tabela com as principais validações disponíveis e exemplos de como utilizá-las:

Tabela de Anotações de Validação

Anotação Descrição Exemplo de Uso
@NotNull O campo não pode ser nulo @NotNull
private String nome;
@NotBlank Não pode ser nulo, nem vazio e nem conter apenas espaços @NotBlank
private String nome;
@NotEmpty Não pode ser nulo nem vazio (permite espaços) @NotEmpty
private String cidade;
@Size(min = x, max = y) Define o tamanho mínimo e/ou máximo da String, lista, array, etc. @Size(min = 3, max = 20)
private String nome;
@Min(valor) Define o valor mínimo numérico @Min(18)
private int idade;
@Max(valor) Define o valor máximo numérico @Max(100)
private int idade;
@Positive O número deve ser positivo @Positive
private int quantidade;
@PositiveOrZero O número deve ser positivo ou zero @PositiveOrZero
private int estoque;
@Negative O número deve ser negativo @Negative
private int temperatura;
@NegativeOrZero O número deve ser negativo ou zero @NegativeOrZero
private int saldo;
@Email Valida se o valor é um e-mail válido @Email
private String email;
@Pattern Valida usando expressão regular @Pattern(regexp="\\d{11}")
private String cpf;
@Past A data deve ser no passado @Past
private LocalDate nascimento;
@Future A data deve ser no futuro @Future
private LocalDate agendamento;
@AssertTrue O valor booleano deve ser true @AssertTrue
private boolean aceitouTermos;
@AssertFalse O valor booleano deve ser false @AssertFalse
private boolean bloqueado;

Exemplos de annotation @Pattern

A anotação @Pattern é muito interessante, pois podemos customizar validações. Veja abaixo alguns exemplos:

    @Pattern(regexp = "\\d{11}", message = "CPF deve conter 11 dígitos numéricos")
    private String cpf;

    @Pattern(regexp = "\\d{2}/\\d{2}/\\d{4}", message = "Data de nascimento deve estar no formato dd/MM/yyyy")
    private String dataNascimento;

    @Pattern(regexp = "\\(\\d{2}\\) \\d{4,5}-\\d{4}", message = "Telefone deve estar no formato (99) 99999-9999 ou (99) 9999-9999")
    private String telefone;

    @Pattern(regexp = "\\d{5}-\\d{3}", message = "CEP deve estar no formato 99999-999")
    private String cep;

Clique aqui para se tornar membro do canal

Abaixo segue nossa aula no YouTube: