如何仅过滤使用我的自定义注释进行注释的 api

如何设置过滤器配置以仅使用此注释可记录过滤 api?


//custom annotation


@Retention(RetentionPolicy.RUNTIME)

@Target(ElementType.METHOD)

public @interface Loggable {

}


@Loggable

@Postmapping

public String  foo(){

return "";

}


ITMISS
浏览 121回答 2
2回答

慕哥6287543

我做了一些研究,因为我认为这是一个有趣的话题。事实证明,您尝试做的事情对于过滤器是不可能的,但对于 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 步中)

牧羊人nacy

如果您正在寻找:if (annotation.annotationType().equals(CustomAnnotationType.class)) {}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java