как отфильтровать только те apis, которые помечены моей пользовательской аннотацией - PullRequest
0 голосов
/ 28 июня 2019

как установить Filter config, который будет фильтровать только apis с этой аннотацией Loggable?

//custom annotation

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Loggable {
}

@Loggable
@Postmapping
public String  foo(){
return "";
}

Ответы [ 2 ]

0 голосов
/ 28 июня 2019

Если вы ищете:

if (annotation.annotationType().equals(CustomAnnotationType.class)) {}
0 голосов
/ 28 июня 2019

Я провел небольшое исследование, потому что думал, что это интересная тема.Оказывается, то, что вы пытаетесь сделать, невозможно с фильтрами, но с AOP.Этот блог точно описывает, что вам нужно: https://www.baeldung.com/spring-aop-annotation

Причина, по которой вы не можете сделать это с фильтрами, заключается в том, что когда вызывается фильтр, еще не определено, какой метод будет вызываться.Это определяется в DispatcherServlet, который выполняется после фильтров.Для получения дополнительной информации об этом см. Эти блоги:

http://tutorials.jenkov.com/java-servlets/servlet-filters.html https://www.baeldung.com/spring-dispatcherservlet

Я думаю, что реализация AOP, описанная в блоге, имеет небольшую проблему.Если исключение генерируется аннотированным методом, я не думаю, что время выполнения регистрируется.Вы можете исправить это, просто обернув joinPoint.proceed в блок try / catch (на шаге 7)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...