Я создал собственный класс аннотаций SecurityAnnotation
@Constraint(validatedBy = SecurityAnnotationValidator.class)
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface SecurityAnnotation {
EmployeeRoles[] employeeRoles();
String message();
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
И у меня есть класс валидатора Constraint
public class SecurityAnnotationValidator implements ConstraintValidator<SecurityAnnotation, String> {
private EmployeeRoles[] employeeRoles;
@Autowired
EmployeeService employeeService;
@Override
public void initialize(SecurityAnnotation securityAnnotation) {
employeeRoles = securityAnnotation.employeeRoles();
}
@Override
public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {
//logic goes here
return false;
}
}
В моем контроллере я аннотировал метод
@RequestMapping( method = RequestMethod.POST)
@SecurityAnnotation(employeeRoles = {EmployeeRoles.HR}, message = "Invalid User")
public HrmsResponse create(@Valid @RequestBody CreateEmployee createEmployee){
Employee employee = employeeService.createEmployee(createEmployee);
return HrmsResponse.buildSuccessResponse(employee);
}
Но функция isValid моей аннотации не вызывается, гуглится и не находит никаких результатов.
Любая помощь будет оценена. Заранее спасибо.