Spring Cloud Spring Boot mybatis分布式微服务云架构(十二)返回JSON格式

原创 2018年03月09日 10:19:13

在上述例子中,通过@ControllerAdvice统一定义不同Exception映射到不同错误处理页面。而当我们要实现RESTful API时,返回的错误是JSON格式的数据,而不是HTML页面,这时候我们也能轻松支持。

本质上,只需在@ExceptionHandler之后加入@ResponseBody,就能让处理函数return的内容转换为JSON格式。

下面以一个具体示例来实现返回JSON格式的异常处理。

  • 创建统一的JSON返回对象,code:消息类型,message:消息内容,url:请求的url,data:请求返回的数据
    public class ErrorInfo<T> {
    
        public static final Integer OK = 0;
        public static final Integer ERROR = 100;
    
        private Integer code;
        private String message;
        private String url;
        private T data;
    
        // 省略getter和setter
    
    }

     

  • 创建一个自定义异常,用来实验捕获该异常,并返回json
    public class MyException extends Exception {
    
        public MyException(String message) {
            super(message);
        }
        
    }

     

  • Controller中增加json映射,抛出MyException异常
    @Controller
    public class HelloController {
    
        @RequestMapping("/json")
        public String json() throws MyException {
            throw new MyException("发生错误2");
        }
    
    }

     

  • MyException异常创建对应的处理
    @ControllerAdvice
    public class GlobalExceptionHandler {
    
        @ExceptionHandler(value = MyException.class)
        @ResponseBody
        public ErrorInfo<String> jsonErrorHandler(HttpServletRequest req, MyException e) throws Exception {
            ErrorInfo<String> r = new ErrorInfo<>();
            r.setMessage(e.getMessage());
            r.setCode(ErrorInfo.ERROR);
            r.setData("Some Data");
            r.setUrl(req.getRequestURL().toString());
            return r;
        }
    
    }

     

  • 启动应用,访问:http://localhost:8080/json,可以得到如下返回内容
    {
        code: 100,
        data: "Some Data",
        message: "发生错误2",
        url: "http://localhost:8080/json"
    }

  • 至此,已完成在Spring Boot中创建统一的异常处理,实际实现还是依靠Spring MVC的注解,更多更深入的使用可参考Spring MVC的文档。

  • 源码来源

在VC中实现程序在启动时隐藏

    最近经常见论坛上有人问,程序在启动时如何隐藏。以下是我总结的一些方法,欢迎大家讨论,找出更好的方法。    对于这类问题,大家最容易想到的可能就是在PreCreateWindow中添加cs.s...
  • AttaBoy
  • AttaBoy
  • 2002-03-03 09:18:00
  • 1228

spring cloud- 阿波罗 apllo 本地开发环境

开源配置中心 - Apollo更多干货spring cloud 微服务spring cloud 知识点服务发现与服务注册定制Rabbon客户端负载均衡策略Spring Cloud Feign使用1Sp...
  • qq_27384769
  • qq_27384769
  • 2018-01-21 21:20:56
  • 831

spring cloud + spring boot + springmvc+mybatis分布式微服务云架构

spring cloud + spring boot + springmvc+mybatis做一个微服务架构需要的技术整理..
  • qq_40354025
  • qq_40354025
  • 2017-10-19 08:58:42
  • 1155

spring+springMVC+mybatis的框架项目基础环境搭建

上一个项目在后台用到spring+springMVC+mybatis的框架,先新项目初步需求也已经下来,不出意外的话,应该也是用这个框架组合。 虽然在之前activiti相关的学习中所用到的框架也...
  • tuzongxun
  • tuzongxun
  • 2016-04-14 18:09:38
  • 8538

企业分布式微服务云SpringCloud SpringBoot mybatis (十五)Spring Boot中使用Flyway来管理数据库版本

Flyway简介Flyway是一个简单开源数据库版本控制器(约定大于配置),主要提供migrate、clean、info、validate、baseline、repair等命令。它支持SQL(PL/S...
  • qq_40342510
  • qq_40342510
  • 2018-02-09 09:56:16
  • 67

Java开发环境之Spring+SpringMVC+Mybatis整合demo

开始学习java开源框架,今天带来的是Spring+SpringMVC+Mybatis框架的整合,并附带一个简单的用户增删该查demo,如有不严谨的地方,恳请各位大神指正,谢谢! 我所用到的...
  • mrydy4l
  • mrydy4l
  • 2015-05-27 09:31:43
  • 1960

STS +Maven+ SpringMVC+Spring+Mybatis 搭建环境

STS +Maven+ SpringMVC+Spring+Mybatis 整合(1)搭建环境概念Spring:Spring是一个开源框架,一个轻量级的java开发框架,它是为了解决企业应用开发的复杂性...
  • a18729216266
  • a18729216266
  • 2016-06-30 23:18:14
  • 1473

第一次用springmvc+mybatis搭建环境

没有什么特别的,就是平时先来无事的时候,正好我们新框架用springmvc+mybatis做的,所以就想熟悉一下。 下面就把我这两天弄环境遇到的问题记录一下,已被下次参考。毕竟时间久了就忘了...
  • rumidavid
  • rumidavid
  • 2017-05-12 20:35:08
  • 1164

SpringMVC+Mybatis集成开发,环境搭建。

Spring Spring是一个轻量级的控制反转,面向切面的开发框架。 个人对轻量级开发框架的理解: Spring算是一个轻量级的开发框架,但是也并不能说他就是一个轻量级的开发框架,轻量级与重量级开发...
  • u013081973
  • u013081973
  • 2015-08-16 14:56:19
  • 700

SpringMVC+Spring+mybatis+redis项目从零开始--Spring mybatis mysql配置实现

SSM项目-Spring mybatis mysql配置实现 上一章我们把SSM项目结构已搭建(SSM框架web项目从零开始--分布式项目结构搭建)完毕,本章将实现Spring,mybatis,mys...
  • a123demi
  • a123demi
  • 2017-01-19 15:10:33
  • 8612
收藏助手
不良信息举报
您举报文章:Spring Cloud Spring Boot mybatis分布式微服务云架构(十二)返回JSON格式
举报原因:
原因补充:

(最多只允许输入30个字)