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

标签 java spring-boot filter

如何设置过滤器配置以仅过滤带有此注释 Loggable 的 api?

//custom annotation

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

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

最佳答案

我做了一些研究,因为我认为这是一个有趣的话题。事实证明,您想要做的事情用过滤器是不可能的,但用 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 block 中(在步骤 7 中)来解决此问题

关于java - 如何仅过滤使用我的自定义注释进行注释的 api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56805396/

相关文章:

java - 问题处理 RabbitMq Listener 抛出的异常

java - 如何在 MockRestServiceServer 中验证 json 请求正文

javascript - 使用 lodash 函数映射柯里化(Currying)过滤器

python - Djongo 查询 BooleanField 失败

java - 如何使用 EditText 编辑全局变量以将值传递给其他 Activity ?

java - Eclipse: "println(__LINE__);"——是否存在这样的预处理器宏来以编程方式获取代码的行号?

java - 使用 spring boot 在同一端口上使用多个 webapp

java - 如何使@Component类中的方法成为@Transactional?

java - WebClient 的 HtmlUnit Android 问题

Django过滤器 boolean 不可迭代