Я занимаюсь разработкой сервиса на Java и с использованием Spring Framework, который использует javax.validation аннотации в методах, как в этом примере:
public void method(
@NotNull @Positive Integer val1,
@NotNull @PastOrPresent Date startDate,
@NotNull @PastOrPresent Date endDate);
Когда я пишу аннотацию @Проверено в классе, все работает нормально, однако у меня есть некоторые проблемы с циклическими зависимостями в некоторых классах StackOverFlow , а аннотация @Validated создает UnsatisfiedDependencyException ошибки. (Я не смогу перейти на @Lazy, но, несмотря на это, мне нужно проверить с аннотацией javax.validation).
Поэтому я хочу проверить метод программно, однако я не нашел способчтобы сделать это для методов еще, я только смог из класса (когда я использую класс Dto), с методом validate из Validated class.
Кто-нибудьможете подсказать как это сделать.
С уважением.
Обновлено 11.09.2009:
Я нашел способ сделать это изследующий метод:
private <T> void validate(T currentObject, String methodName, Object...parameterValues) {
Set<ConstraintViolation<T>> errors=null;
ExecutableValidator executableValidator = validator.forExecutables();
for (Method method : currentObject.getClass().getMethods()) {
if (methodName.equals(method.getName())) {
errors = executableValidator.validateParameters(currentObject, method, parameterValues);
break;
}
}
System.out.println((errors != null && !errors.isEmpty())?"There are exceptions":"There are not exceptions");
}
Если кто-то может сделать это с отражениями и проще всего, я буду вам благодарен.