SpringBoot的默认异常处理映射为“/error”。BasicErrorController已经默认实现了“text/html”的处理,如果想返回自定义JSON格式信息,则实现“ErrorController ”接口,增加一个produces 为“application/json”的方法即可,如:

@RestController
public class ExceptionController implements ErrorController { @Autowired
private ErrorAttributes errorAttributes; /**
* 默认错误
*/
private static final String path_default = "/error"; @Override
public String getErrorPath() {
return path_default;
} /**
* JSON格式错误信息
*/
@RequestMapping(value = path_default, produces = {MediaType.APPLICATION_JSON_VALUE})
public ResponseMessage error(HttpServletRequest request) {
RequestAttributes requestAttributes = new ServletRequestAttributes(request);
Map<String, Object> body = this.errorAttributes.getErrorAttributes(requestAttributes, true);
return ResponseMessage.fail("服务器端异常!", body);
} }

ResponseMessage 为自定义的实体类,用于向前端返回统一格式信息,结构如:

public class ResponseMessage {

    /**
* 是否成功
*/
private boolean success; /**
* 返回文字
*/
private String msg; /**
* 返回数据
*/
private Object data; public ResponseMessage() {
} public ResponseMessage(boolean success, String msg, Object data) {
this.success = success;
this.msg = msg;
this.data = data;
} public boolean isSuccess() {
return success;
} public void setSuccess(boolean success) {
this.success = success;
} public String getMsg() {
return msg;
} public void setMsg(String msg) {
this.msg = msg;
} public Object getData() {
return data;
} public void setData(Object data) {
this.data = data;
} public static ResponseMessage success(){
return new ResponseMessage(true, null, null);
} /**
* 成功返回方法
* @param data 返回数据
*/
public static ResponseMessage success(Object data){
return new ResponseMessage(true, null, data);
} /**
* 失败返回方法--默认
*/
public static ResponseMessage fail(){
return new ResponseMessage(false, null, null);
} /**
* 失败返回方法
* @param message 文字信息
*/
public static ResponseMessage fail(String message){
return new ResponseMessage(false, message, null);
} /**
* 失败返回方法
* @param message 文字信息
* @param data 数据
*/
public static ResponseMessage fail(String message, Object data){
return new ResponseMessage(false, message, data);
} }

开发者可以根据实际业务进行扩展次实体类,如增加时间戳、错误码等信息

SpringBoot ErrorController 实践的更多相关文章

  1. springboot - 应用实践(N)使用springboot内置的@Scheduled

    1.springboot开箱即用,内置调度任务的使用. 建一个简单的springboot工程,pom.xml: <?xml version="1.0" encoding=&q ...

  2. springboot - 应用实践(3)springboot的核心

    1.springboot的启动类与核心注解@SpringBootApplication 2.springboot基本配置 3.springboot自动配置原理

  3. springboot - 应用实践(1)认识springboot

    1.为什么要推出springboot springboot设计的目的是用来简化新spring应用的初始搭建以及开发过程.springboot遵循“约定优于配置”原则. 2.springboot默认的配 ...

  4. SpringBoot Redis 实践指南

    前言 SpringBoot Cache 是一个很好的缓存框架,可以兼容多种缓存实现,数据量较大的情况下,Redis 应该是最多被使用的. 本文重点介绍 SpringBoot 和 Redis 整合使用的 ...

  5. springboot - 应用实践(2)第一个springboot应用

    1.使用maven创建一个快速启动项目 2.引入相关依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:x ...

  6. springboot之kafka安装与实践

    环境:腾讯云centos7 1.下载 http://mirror.bit.edu.cn/apache/kafka/2.3.0/kafka_2.11-2.3.0.tgz 2.解压 tar -xvf ka ...

  7. springboot之rabbitmq安装与实践

    环境:腾讯云centos7 注意:rabbitmq安装插件,可能会报错.本人是主机名的问题,所以修改了主机名. vim /etc/hosts vim /etc/hostname 修改这两个文件,并重启 ...

  8. 微服务-开发框架之springboot by 大雄daysn

    目录 一.关于springboot 二.springboot的实践 2.1发布一个rest的api 2.2端点 2.3健康检查 2.4远程监控 一.关于springboot 由来:spring1.0- ...

  9. 公众号开发之wx-tools+springboot应用实战-音乐爬虫推送[JAVA]

    springboot+wx-tools实践!音乐爬虫推送公众号DEMOGitHub地址:wx-tools 最终DEMO源码地址: music_collector 先理一下大概的开发步骤: 1. 创建一 ...

随机推荐

  1. git 报错fatal: not a git repository (or any of the parent directories): .git

    产生原因:一般是没有初始化git本地版本管理仓库,所以无法执行git命令 解决方法:操作之前执行以下命令行:  git init 初始化git,即可解决:

  2. idea内存溢出解决方法

    在Run/Debug configuration 的vm options里面输入 -server -XX:PermSize=128M -XX:MaxPermSize=256m eclipse: -Xm ...

  3. 开源跨境ERP - 小老板 Docker/Docker Compose一键部署

    先上部署成功后的截图,各个菜单点击均无报错 DockerCompose 包含: 1. 三个mysql5.7数据库 2. redis php会话存储+ memcached 3. 小老板php主程序 do ...

  4. debian设置limits.conf

    最近已经把自己的游戏框架主要功能完成得差不多了,决定将自己的开发环境从debian7升级到debian9,不然太多第三方依赖都跟不上了.debian10刚出来,MongoDB还没适配,所以暂不考虑. ...

  5. 原创js脚本实现百度网盘任意文件强制下载

    代码: //get file list data var data=require("system-core:context/context.js").instanceForSys ...

  6. Computer Vision_2_Active Shape Models:Active Shape Models-Their Training and Application——1995

    此为计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面. 1. Active Appearance Models 活动表观模型和活动轮廓模型基本思想来源 Snake,现在 ...

  7. 随意软连接/home/users目录导致环境变量消失后的事故

    1 自己的用户zj下,把/home/zj 删除后用ln -s软连接其他目录,导致了当前用户的.bash_profile失效 2 解决思路 第一,删除软连接 rm -rf /home/zj   记住后面 ...

  8. Ubuntu下PHP+MySQL+Apache+PHPStorm的安装和配置

    粘贴自:https://www.jianshu.com/p/a6a0d2a29591 1.Apache的安装: $ sudo apt-get update $ sudo apt-get install ...

  9. Sourcetree 出现错误提示git -c diff.mnemonicprefix=false -c core.quotepath=false fetch origin

    具体表现为:sourcetree无法和gitlab远程仓库进行交互,但使用本地cmd,可以使用git命令和远程仓库交互通过各种账户.秘钥等操作,都无法解决该问题具体信息如下: 解决方式:点击 工具–& ...

  10. Tarjan-CV/BCC/SCC算法学习笔记

    DFS性质的应用--利用Tarjan算法求割顶.BCC.SCC 整理自<算法竞赛入门经典--训练指南>以及网络 DFS (depth first search)深度优先搜索算法 dfs森林 ...