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;
}
}
📌 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)