Sim, é totalmente possível e, em muitos casos, necessário garantir a ordem de execução dos validadores. A maneira como o Spring injeta uma lista de beans, como private List validadores, não garante uma ordem específica por padrão.
Para controlar essa ordem, você pode usar as seguintes estratégias no Spring:
- Usando a anotação @Order
A forma mais simples e direta de definir a ordem é usando a anotação @Order em cada um dos seus validadores. O Spring respeitará essa ordem ao injetar a lista de beans.
Você deve usar um número inteiro para a anotação, onde números menores têm prioridade maior.
Exemplo: import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
@Component
@Order(1) // Executa primeiro
public class ValidadorMedico implements ValidadorAgendamentoDeConsulta {
// Implementação da validação do médico
}
@Component
@Order(2) // Executa em segundo
public class ValidadorPaciente implements ValidadorAgendamentoDeConsulta {
// Implementação da validação do paciente
}
@Component
@Order(3) // Executa por último
public class ValidadorConsulta implements ValidadorAgendamentoDeConsulta {
// Implementação da validação da consulta
}