DEV Community

Uiratan Cavalcante
Uiratan Cavalcante

Posted on

Validando parâmetros de métodos com a classe Assert do Spring

Você pode usar a classe Assert do Spring (org.springframework.util.Assert) para validar os parâmetros no próprio construtor e evitar que o objeto seja criado com valores inválidos.


🔹 Exemplo com Assert no Construtor

import org.springframework.util.Assert;

import java.time.Instant;

public class Autor {

    private final String nome;
    private final String email;
    private final String descricao;
    private final Instant instanteCriacao;

    public Autor(String nome, String email, String descricao) {
        Assert.hasText(nome, "O nome é obrigatório");
        Assert.hasText(email, "O email é obrigatório");
        Assert.hasText(descricao, "A descrição é obrigatória");
        Assert.isTrue(descricao.length() <= 400, "A descrição não pode passar de 400 caracteres");

        this.nome = nome;
        this.email = email;
        this.descricao = descricao;
        this.instanteCriacao = Instant.now();
    }

    public String getNome() {
        return nome;
    }

    public String getEmail() {
        return email;
    }

    public String getDescricao() {
        return descricao;
    }

    public Instant getInstanteCriacao() {
        return instanteCriacao;
    }
}
Enter fullscreen mode Exit fullscreen mode

📌 Como Funciona?

  • Assert.hasText(nome, "O nome é obrigatório") → Garante que a string não é nula nem vazia.
  • Assert.isTrue(descricao.length() <= 400, "A descrição não pode passar de 400 caracteres") → Valida o tamanho da descrição.

Se qualquer uma dessas condições for violada, uma IllegalArgumentException será lançada imediatamente, impedindo a criação do objeto.


🎯 Vantagens

Validação acontece no momento da criação do objeto, garantindo que ele nunca terá um estado inválido.

Não depende de um framework externo, como o Jakarta Validation (@NotBlank, @Size, etc.).

Leve e direto, pois Assert já vem com o Spring Core.


🚀 Comparação com Jakarta Validation

Método Quando Usar? Como Funciona?
Assert do Spring Se quiser validação imediata e leve Lança IllegalArgumentException no construtor.
Jakarta Validation (@NotBlank) Se quiser integração automática com Spring e @Valid Precisa de um framework de validação e só ocorre quando validado explicitamente.

🔹 Quando Usar Assert no Construtor?

💡 Use Assert quando quiser impedir a criação de objetos inválidos diretamente na classe sem depender de validação externa.

💡 Use Jakarta Validation (@NotBlank, @Valid) quando os dados vêm de requisições HTTP e precisam ser validados antes da conversão para entidade.

Top comments (0)