如何设置过滤器配置以仅使用此注释可记录过滤 api?//custom annotation@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHOD)public @interface Loggable {}@Loggable@Postmappingpublic String foo(){return "";}
2 回答

慕哥6287543
TA贡献1831条经验 获得超10个赞
我做了一些研究,因为我认为这是一个有趣的话题。事实证明,您尝试做的事情对于过滤器是不可能的,但对于 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
TA贡献1862条经验 获得超7个赞
如果您正在寻找:
if (annotation.annotationType().equals(CustomAnnotationType.class)) {}
添加回答
举报
0/150
提交
取消