广告
返回顶部
首页 > 资讯 > 后端开发 > Python >使用@ControllerAdvice同时配置过滤多个包
  • 878
分享到

使用@ControllerAdvice同时配置过滤多个包

2024-04-02 19:04:59 878人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

@ControllerAdvice同时配置过滤多个包 看代码吧~ //@ControllerAdvice("com.automvc") //配置过滤一个的时候 @Contro

@ControllerAdvice同时配置过滤多个包

看代码吧~


//@ControllerAdvice("com.automvc")   //配置过滤一个的时候
@ControllerAdvice(basePackages={"com.automvc", "com.test"})    //同时配置过滤多个包

springboot 多个@RestControllerAdvice时的拦截顺序

我们的项目中经常会使用到别人的模块,例如我的项目demo,要依赖别人的A模块,以及基础的核心core模块,此时core模块有一个使用了@RestControllerAdvice的类,负责拦截所有的controller异常。

但是呢,他的异常处理不符合我们demo项目的要求,这就导致我们demo项目要重写自己的controller异常拦截。

此时我们可以用的解决异常的方法有三种:

1、使用aop进行切面拦截异常

2、controller每个方法都用try-catch捕获异常

3、增加一个@RestControllerAdvice标注的类,负责处理我们项目的controller异常。

我选用第三种方法,但是当我写了个PartControllerAdvice类,指定basePackages为我自己的项目包,依旧还是被core模块的全局异常处理类拦截了。

查资料和找博客发现如果有多个加了@RestControllerAdvice的类,他们会依次加载,遇到异常时,按照类加载顺序进行判断,如果前面的类有能处理这个异常的方法,就给前面的类处理。

我的项目中有两个标注了@RestControllerAdvice的类,core模块的类被先加载,且core模块的异常处理类有个方法专门处理Exception类型的异常,所以我的局部异常处理类始终不执行。

解决方法:

@Order(Ordered.HIGHEST_PRECEDENCE) 使用@Order注解,提高自己的局部异常处理类的加载顺序就行了

代码:

模拟效果:

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: 使用@ControllerAdvice同时配置过滤多个包

本文链接: https://www.lsjlt.com/news/128235.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作