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.

AWS GenAI LIVE image

How is generative AI increasing efficiency?

Join AWS GenAI LIVE! to find out how gen AI is reshaping productivity, streamlining processes, and driving innovation.

Learn more

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay