Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Bean Validation Custom

Boa noite, acabei de finalizar a aula mas fiquei com algumas dúvidas.

1ª Se eu tiver alguma validação mais especifica (que não esteja nos métodos já implementados), consigo fazer uma anotação do bean validation customizada para o meu problema ?

2ª Complementando a pergunta de cima, no caso de uma validação específica, seria melhor fazer num Service da vida ou usar o Bean Validation mesmo ? (Exemplo: verificar se um CPF é válido ou não).

2 respostas
solução!

Oi Diego,

Vamos lá!

  1. Sim, é possível criar anotações de validação personalizadas usando o Bean Validation em Java. Para criar uma anotação personalizada, você precisará criar uma classe que estenda a classe javax.validation.Constraint. Aqui está um exemplo de como fazer isso:
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

@Documented
@Constraint(validatedBy = ValidCPFValidator.class)
@Target({ TYPE, FIELD, ANNOTATION_TYPE })
@Retention(RUNTIME)
public @interface ValidCPF {

    String message() default "CPF inválido";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};

}

Neste exemplo, a anotação @ValidCPF é criada com uma mensagem de erro padrão e é validada pelo Validator ValidCPFValidator. Você pode usar essa anotação em qualquer atributo ou classe que precise validar um CPF.

2. Quanto ao melhor lugar para colocar a validação de um CPF, isso depende do contexto da sua aplicação. Se a validação de CPF for uma operação comum que é usada em vários lugares da sua aplicação, pode ser conveniente criar um Serviço para realizar essa validação e chamar esse serviço onde for necessário.

No entanto, se a validação de CPF for um processo específico que é usado apenas em um ou dois lugares da sua aplicação, pode ser mais conveniente usar a anotação de validação personalizada do Bean Validation diretamente no lugar onde a validação é necessária. Isso pode ser mais simples e mais direto, e evita a necessidade de criar um serviço adicional.

Abcs!

Opa, muito obrigado :D