Olá pessoal,
Gostaria de uma opinião, queria ideias sobre como melhorar este esquema de validação.
Se fosse possível remover o excesso de @Autowired da classe, já iria ser de grande ajuda.
O caso é o seguinte:
Possuo um método que recebe uma determinada entidade por parâmetro e deve fazer N validações da regra de negócio sobre ela.
Cada validador é uma implementação de uma interface “Validator”, lembrando que todas essas implementações são beans gerenciados pelo Spring.
Bem, meus validadores estão assim:
@Component
public PrimeiroValidador implements Validator {
...
}
@Component
public SegundoValidador implements Validator {
...
}
@Component
public TerceiroValidador implements Validator {
...
}
E para utilizá-los, faço o seguinte:
public void salvar(Entidade entidade) {
Collection<Validator> validators = Arrays.asList(primeiroValidador, segundoValidador, terceiroValidador);
for (Validator validator : validators) {
validator.validate(entidade);
}
// se não parou em nenhum validador, salva entidade
}
Até ai parece tudo OK, minha grande dúvida é aqui:
public class EntidadeService {
@Autowired
private PrimeiroValidador primeiroValidador;
@Autowired
private SegundoValidador segundoValidador;
@Autowired
private TerceiroValidador terceiroValidador;
// método salvar
}
Se eu tivesse 10 implementações de Validator para utilizar, teria que injetar todos os beans desta forma?
Isso está ficando muito verboso, existe alguma outra forma elegante para fazer isso? essas injeções ou até mesmo um outro esquema de validação.
Valeu
Abraços