我一直在寻找一种方法来使 @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/