spring - 寻找一种方法将@ControllerAdvice 分配给特定的 url 路径模式或 Controller

标签 spring

我一直在寻找一种方法来使 @ControllerAdvice 仅针对特定的 url 路径模式或一组 Controller 被调用。因此,我发现我可以创建自定义 ExceptionHandlerExceptionResolver 并通过 setMappedHandlerClasses() 将其分配给自定义 Controller 。问题是,还有一个默认的 ExceptionHandlerExceptionResolver,它也会获取我的 @ControllerAdvice。所以我最终得到了两个 ExceptionHandlerExceptionResolver,它们都有在 @ControllerAdvice 注释类中定义的处理程序。因此,虽然我的自定义 ExceptionHandlerExceptionResolver 并未在所有 bean 上调用,但默认的 bean 会调用。可能的解决方案是删除 @ControllerAdvice 并在自定义 ExceptionHandlerExceptionResolver 中手动分配自定义 ResponseEntityExceptionHandler。我尝试了最后一种方法,但似乎我必须重写 ExceptionHandlerExceptionResolver 中的很多方法,最后代码看起来很不干净。那么,有没有办法以不同的方式实现它,或者可以使用自定义处理程序清洁器实现 ExceptionHandlerExceptionResolver

最佳答案

正如 Ralph 所提到的 - 从 Spring 4(现在有一个稳定的版本)开始,ControlerAdvice 可以限制为具有指定注释的 Controler。看看:

http://blog.codeleak.pl/2013/11/controlleradvice-improvements-in-spring.html

(本文后半部分)了解更多详情。

关于spring - 寻找一种方法将@ControllerAdvice 分配给特定的 url 路径模式或 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20098645/

相关文章:

java - 如何在运行时修改 Camel 端点

spring - JavaEE 6 和 Spring

java - Spring 集成 JMS 在入站和出站中发布订阅

java - Spring数据存储库聚合

java - 如何确定 Spring @Controller 没有收到请求的原因?

java - Spring项目中如何避免映射的重复代码?

Java spring数据mongodb : UUID as entity ID in mongodb

html - spring mvc资源无法访问或不工作

java - 启动 Spring MVC 应用程序时获取 BeanDefinitionStoreException

java - Spring BeanPostProcessor 不会调用其实现的 bean ,而是调用所有其他 bean