在依赖的框架中已经有统一异常处理的情况下,如何定制自己的统一异常处理spring boot版本
spring boot 环境下的统一异常处理大家已经非常熟悉了,不熟悉的化可以参考
<<Spring Boot中Web应用的统一异常处理>>。公司内部的统一异常处理如下:
@ExceptionHandler
public ResultEntity<?> handler(HttpServletRequest req, HttpServletResponse res, Exception e) {
logger.info("统一异常处理,Restful Http请求发生异常,HTTP响应码信息:{}", res.getStatus());
ResultEntity<?> resultEntity = new ResultEntity();
if (e instanceof BizException) {
logger.error("统一异常处理,异常代码00:" + e.getMessage());
resultEntity.setCode(this.getReturnCode(((BizException)e).getCode()));
resultEntity.setMsg(((BizException)e).getMsg());
return resultEntity;
} else if (e instanceof NullPointerException) {
exceptionCount.incrementAndGet();
logger.error("统一异常处理,异常代码01:" + e.getMessage(), e);
resultEntity.setCode(this.getReturnCode(ReturnCodeEnum.NULL_POINTER_EXCEPTION.code));
resultEntity.setMsg(ReturnCodeEnum.NULL_POINTER_EXCEPTION.msg);
return resultEntity;
}
可以看到它设定的返回出参的json格式为:
{
"code": "7060124001",
"msg": "参数校验未通过:[不能为空]"
}
项目需要重构。这个模块业务返回的接口json格式应该为:
{
"respCode": "7060124001",
"respDesc": "参数校验未通过:[不能为空]",
"respInfo": null
}
我们是否可以定义一个@RestControllerAdvice,并在spring boot 生效?实验后是可以。在定义两个@RestControllerAdvice后日志输出有两个:
Detected @ExceptionHandler methods in myControllerAdvice|
Detected @ExceptionHandler methods in controllerExceptionHandleAdvice|
自定义的myControllerAdvice也是生效的。如果你需要排除基础jar包controllerExceptionHandleAdvice带来的影响,你可以在启动类上加上如下注解:
@ComponentScan(value="com.epay.ts.piss.basic.springboot",excludeFilters= {@ComponentScan.Filter(type= FilterType.ASSIGNABLE_TYPE, value= {ControllerExceptionHandleAdvice.class})})
上面注解的学习可以参见spring boot去除扫描自动注入依赖方法
在依赖的框架中已经有统一异常处理的情况下,如何定制自己的统一异常处理spring boot版本的更多相关文章
- 同一容器中a标签比较多的情况下通过title属性值隐藏
同一容器中a标签比较多的情况下如何通过title属性值控制a标签的隐藏或显示 最近项目中遇到一个IE兼容性问题,网站需要在底部footer添加"站长统计"代码,容器中动态添加很多a ...
- 关于angular JS 中$timeOut 的一些不正常情况下的$destory
最近项目中存在的问题头疼脑热了好一会. 我先简单说明下问题是由,使用$timeOut循环调用的时候由于页面存在异步加载会出现反复执行循环反复调用$timeOut,怎么清除跳出循环都不管用.于是查到了如 ...
- 字符串怎么换行 || 字符串中使用单引号时应该怎么写 || 保留两位小数 || 数字0在if中的意思是false || 什么情况下会会报undefined || null和undefined的区别 ||
换行的字符串 "This string\nhas two lines" 字符串中使用单引号时应该怎么写 'You\'re right, it can\'t be a quote' ...
- 【转载】Sqlserver数据库中无自增Id的情况下使用ROW_NUMBER()函数进行数据分页
在Sqlserver数据库中,如果查询表中含有自增长Id列,一般会采用select Top的方式来数据的分页操作.而实际上很多数据表设计的时候,不一定含有自增长Id列,那么数据库没有Id自增列的时候要 ...
- 在Node.js中在保持目录结构的情况下压缩指定目录
最近在做一个文件升级的功能,需要从下载服务器中指定目录下的文件.在学习了zlib后发现这个模块达不到这个功能 在查找资料后发现后发现 archiver 模块很好用,不过我也发现大部分中文资料没有如果查 ...
- Python+Selenium框架 ---一个类文件多个测试方法情况下测试固件的写法
我们测试中,肯定需要,打开一个页面,然后测试这个页面的多个用例,才关闭这个页面,去测试其他页面,在unittest是有相关测试固件方法去支持这种行为.请看下面 # coding=utf-8 impor ...
- Android手机中怎么样在没root的情况下 修改 hosts 文件
工具 链接:https://pan.baidu.com/s/1AENluDCQ-2qYDPcE5K6l8g 密码:t7eu http://bbs.360.cn/forum.php?mod=view ...
- Django框架,python2和python3共存的情况下,创建Django项目
一.python2和python3共存的情况下,直接使用 django-admin startproject Django-project 这个时候系统默认使用的是python2创建,可能由于pyth ...
- virtualBox中有线和无线两种情况下centos虚拟机和本地机互ping的方案
之前写微信点餐系统的时候,刚开始是无线连接,然后每次进去虚拟机ip和本地ip都会改变,所以每次都需要配置一下nginx,还有本地的路径.之后换有线连接,就研究了一下桥接模式有线情况下虚拟机静态ip设置 ...
随机推荐
- PHP swoole TCP服务端和客户端
服务端 <?php $server = ,SWOOLE_PROCESS,SWOOLE_SOCK_TCP); $server->set(array( , )); $server->on ...
- Redis——解决“org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'redisReferenceResolver': Unsatisfied dependency expressed through constructor parameter 0”
错误栈: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ...
- react-缓存
目录结构: 用到缓存的地方: 缓存的方法 清楚缓存
- 《剑指offer》算法题第十一天
今日题目: 滑动窗口的最大值 扑克牌中的顺子 圆圈中最后剩下的数字 求1+2+3+...+n 不用加减乘除做加法 构建乘积数组 今天的题目比较有意思,可以学到很多知识,包括第1题中的数据结构——双向队 ...
- The Semantics of Constructors: The Default Constructor (默认构造函数什么时候会被创建出来)
本文是 Inside The C++ Object Model, Chapter 2的部分读书笔记. C++ Annotated Reference Manual中明确告诉我们: default co ...
- Confluence 6.15 使用附件宏
希望添加附件宏到一个页面中: 从编辑工具栏中,选择 插入(Insert) > 其他宏(Other Macros) 找到并且选择需要的宏. 可用使用自动完成加快这个过程:输入 { 然后开始输入 ...
- [HEOI2016&TJOI2016] 排序(线段树)
4552: [Tjoi2016&Heoi2016]排序 Time Limit: 60 Sec Memory Limit: 256 MBSubmit: 2703 Solved: 1386[S ...
- 流程控制(判断if switch)
判断语句 判断条件比特别多大 时候用switch 其他时候if语句比较方便 1.if……else a) if(判断条件) {执行语句:} b) else if (判断语句){执行语句:} ...
- [CSP-S模拟测试]:D(暴力+剪枝)
题目传送门(内部题47) 输入格式 第一行一个正整数$n$.第二行$n$个正整数,表示序列$A_i$. 输出格式 一行一个正整数,表示答案. 样例 样例输入: 530 60 20 20 20 样例输出 ...
- orale数据库的SQL查询
创建学生表,成绩表,教师表,课程表,分别添加数据信息 create table student( sno ) primary key, sname ), sage ), ssex ) ); cre ...