使用@ControllerAdvice同时配置过滤多个包
@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注解,提高自己的局部异常处理类的加载顺序就行了
代码:
模拟效果:
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
SpringBoot @ControllerAdvice 拦截异常并统一处理
在spring 3.2中,新增了@ControllerAdvice 注解,可以用于定义@ExceptionHandler.@InitBinder.@ModelAttribute,并应用到所有@RequestMapping中.参考:@ControllerAdvice 文档 一.介绍 创建 MyControllerAdvice,并添加 @ControllerAdvice注解. package com.sam.demo.controller; import org.springframework.ui
-
Spring boot项目中异常拦截设计和处理详解
背景: 项目运行过程中会出现各种各样的问题,常见的有以下几种情况: 业务流程分析疏漏,对业务流程的反向操作.边界分析设计不充分 调用外部服务.调用外部系统出现的超时.错误.返回值与预期不符 外部资源连通性问题,db等服务器出现的网络抖动或宕机 无论是分析设计.开发.测试.线上都需要能够准确定位问题并制定解决方案. 目的: 规范化异常的处理过程,避免异常被吞和到处都在捕获异常的情况 准确的反馈异常信息,为定位问题提供依据 通用性异常全局处理,降低业务开发关注度 对异常情况进行预警,以便能够及时响应
-
Springboot项目使用拦截器方法详解
1. 创建一个拦截器并实现HandlerInterceptor接口 package com.leiyuan.bs.interceptor; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.h
-
详解SpringBoot AOP 拦截器(Aspect注解方式)
常用用于实现拦截的有:Filter.HandlerInterceptor.MethodInterceptor 第一种Filter属于Servlet提供的,后两者是spring提供的,HandlerInterceptor属于Spring MVC项目提供的,用来拦截请求,在MethodInterceptor之前执行. 实现一个HandlerInterceptor可以实现接口HandlerInterceptor,也可以继承HandlerInterceptorAdapter类,两种方法一样.这个不在本文
-
Spring Boot使用过滤器和拦截器分别实现REST接口简易安全认证示例代码详解
本文通过一个简易安全认证示例的开发实践,理解过滤器和拦截器的工作原理. 很多文章都将过滤器(Filter).拦截器(Interceptor)和监听器(Listener)这三者和Spring关联起来讲解,并认为过滤器(Filter).拦截器(Interceptor)和监听器(Listener)是Spring提供的应用广泛的组件功能. 但是严格来说,过滤器和监听器属于Servlet范畴的API,和Spring没什么关系. 因为过滤器继承自javax.servlet.Filter接口,监听器继承自ja
-
使用@ControllerAdvice同时配置过滤多个包
@ControllerAdvice同时配置过滤多个包 看代码吧~ //@ControllerAdvice("com.automvc") //配置过滤一个的时候 @ControllerAdvice(basePackages={"com.automvc", "com.test"}) //同时配置过滤多个包 springboot 多个@RestControllerAdvice时的拦截顺序 我们的项目中经常会使用到别人的模块,例如我的项目demo,要依赖
-
JSP过滤器Filter配置过滤类型全部汇总
一.配置方法 1 映射过滤应用程序中所有资源 <filter> <filter-name>loggerfilter</filter-name> <filter-class>myfilter.LoggerFilter</filter-class> </filter> <filter-mapping> <filter-name>loggerfilter</filter-name> <url-pat
-
spring配置扫描多个包问题解析
spring 配置扫描多个包,有时候我们希望不同功能类型的包放在不同的包下,这就需要 <!-- 自动扫描该包,使 SpringMVC 为包下用了@controller注解的类是控制器 --> <context:component-scan base-package="com.weixiao.ssmcleardb.controller" /> <context:component-scan base-package="com.weixiao.lis
-
ASP.NET Core配置设置之Configuration包
ASP.NET Core 中提供了一个Configuration 包,用以应用配置基于配置提供程序建立的键值对.这里以json文件配置的方式,简单的介绍一下它的用法. 首先定义一个配置文件appsettings.json: { "key1": "value1", "key2": -1, "subsection": { "key1": "value2", "key2":
-
Nginx中配置过滤爬虫的User-Agent的简单方法
过去写博客的时候经常出现服务器宕机,网页全部刷不出来,但是Ping服务器的时候又能Ping通.登录SSH看了下top,惊呆了,平均负载13 12 8.瞬间觉得我这是被人DDOS了么?看了下进程基本上都是php-fpm把CPU给占了,去看下日志吧... 一看不得了,基本上都是被一个User Agent叫"YisouSpider"的东西给刷屏了,一看就不知道是哪的蜘蛛,太没节操了. 找到根目录配置区,增加User Agent过滤判断语句,发现叫"YisouSpider"
-
Mac中配置gradle环境及使用android studio打包jar包与arr包的方法
前言 在Mac中用android studio 导出jar包最重要的是需要配置gradle ,它包的导出也是通过gradle命令进行的. 所以,如果想成功打包,要先配置好gradle环境,这样你才可以在android studio中的terminal中直接使用gradle命令了.下面话不多说了,来一起看看详细的介绍吧. gradle 环境变量的配置 1.这个配置和jdk的环境变量配置类似 启动终端,进入当前用户目录. 2.创建 .bash_profile 文件,如果已经有了就直接打开 3.用命令
-
springboot配置内存数据库H2教程详解
业务背景:因soa系统要供外网访问,处于安全考虑用springboot做了个前置模块,用来转发外网调用的请求和soa返回的应答.其中外网的请求接口地址在DB2数据库中对应专门的一张表来维护,要是springboot直接访问数据库,还要专门申请权限等,比较麻烦,而一张表用内置的H2数据库维护也比较简单,就可以作为替代的办法. 环境:springboot+maven3.3+jdk1.7 1.springboot的Maven工程结构 说明一下,resource下的templates文件夹没啥用.我忘记
-
Spring常用配置及解析类说明
springMVC配置用法的文章很多,但具体描述清楚的不多,这里主要介绍下常用的配置项的用法,以及它的解析类,springMVC处理内容有两种方式,一种是converter,另一种是ViewResolver,两种都能处理json,xml以及form内容格式. <?xml version="1.0" encoding="UTF-8" standalone="no"?> <beans xmlns="http://www.s
-
CKEditor4配置与开发详细中文说明文档
一.CKEditor4安装 安装CKEditor 是很容易的.选择合适的过程(新安装或升级),按下面描述的步骤安装. 1.新安装 第一次安装CKEditor,按如下方式进行: 1) 从CKEditor 网站:http://ckeditor.com/download下载最新版本的CKEditor . 2) 将下载的文档解压到你的website根目录下的ckeditor 目录中.你可以将文档放在你的website的任意路径中.ckeditor 目录是缺省目录. 2.升级 要升级现有的CKEdito
-
解决springboot中配置过滤器以及可能出现的问题
在springboot添加过滤器有两种方式: 1.通过创建FilterRegistrationBean的方式(建议使用此种方式,统一管理,且通过注解的方式若不是本地调试,如果在filter中需要增加cookie可能会存在写不进前端情况) 2.通过注解@WebFilter的方式 通过创建FilterRegistrationBean的方式创建多个filter以及设置执行顺序: 1.创建两个实现Filter接口的类TestFilter1 .TestFilter2 package com.aoxun.c
随机推荐
- 超强、超详细Redis数据库入门教程
- ExtJs扩展之GroupPropertyGrid代码
- 预防黑客侵入你正在使用的Win系统(隐藏帐号)
- Java Web开发之访问路径问题分析
- JavaScript While 循环 教程
- BootStrap 智能表单实战系列(二)BootStrap支持的类型简介
- PHP错误处理函数register_shutdown_function使用示例
- 整合了前面的PHP数据库连接类~~做成一个分页类!
- 隐性调用php程序的方法
- PHP通过iconv将字符串从GBK转换为UTF8字符集
- 浅谈jQuery 中的事件冒泡和阻止默认行为
- 一天一个shell命令 linux文本操作系列-chmod命令用法
- 移动手机APP手指滑动切换图片特效附源码下载
- JavaScript实现DIV层拖动及动态增加新层的方法
- [基础知识]Linux新手系列之五
- C#通过指针实现快速拷贝的方法
- 解析java中super的用法分析
- C# 文字代码页 文字编码的代码页名称速查表
- Java中SimpleDateFormat日期格式转换详解及代码示例
- java工具类SendEmailUtil实现发送邮件