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. Centos7--从最小化系统发开发环境

    Centos7--从最小化系统发开发环境 ​程序员总是离不开"环境"的困扰,从进入新手村的那一天就开始手动搞各种环境.虽然阿里云学生服务很方便,但是想弄集群真的买不起.正好实验室有 ...

  2. VisualSVN Server 安装

    1.去官网下载:https://www.visualsvn.com/server/download/ 2.安装: 修改为后:  3.开机自动启动.

  3. canvas-八卦图和时钟实现

    八卦图: <body> canvas id="></canvas> <script> //获取到画布元素 let myCanvas = docume ...

  4. element-ui表格带复选框使用方法及默认选中方法

    一.实现多选:步骤1:在表格中添加一列 步骤2:在data中定义以及数组用来存储选中的元素.例如:multipleSelection:[] selection-change方法用户实时监听选中元素 实 ...

  5. Redis笔记一

    REmote DIctionary Server 是一个开源.内存存储的数据结构服务器,可以用作数据库来存储key-value数据,支持字符串,哈希表,列表,集合,位图,地理空间信息等数据类型,同时也 ...

  6. 使用百度地图API自动获取地址和经纬度

    先上效果图,这是直接点击获取经纬度和地址的.没有做搜索的功能. 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitiona ...

  7. shell script 编程入门

    参考 <linux shell scripting cookbook> 控制台输出 结构化输出 #!/bin/bash #Filename: printf.sh printf " ...

  8. 【坑】在使用EL表达式时表达式无法获取数值

    错误描述: 使用EL表达式 前台原样输出表达式而不输出值 错误环境: idea 2017.1.2 错误原因: jsp页面默认会忽略el表达式,需要设置为不忽略 解决方案 设置<%@ page i ...

  9. 转载:Java:字节流和字符流(输入流和输出流)

    本文内容: 什么是流 字节流 字符流 首发日期:2018-07-24 什么是流 流是个抽象的概念,是对输入输出设备的抽象,输入流可以看作一个输入通道,输出流可以看作一个输出通道. 输入流是相对程序而言 ...

  10. git本地仓库删除后从远程仓库更新代码

    1.$ ssh-agent bash 2.$ ssh-add ~/.ssh/id_rsa_hyp 添加ssh密匙 3.$ git fetch git@github.com:xxx.git master ...