项目用到了springboot,本来很高兴,但是项目里什么东西都没有,验证,全局异常这些都需要自己区配置。最近springboot用的还是蛮多的,我还是做事情,把经验发表一下.全局统一的异常,首先异常的返回值和正常返回的返回值应该统一json.返回值的code和msg可以用enum保存起来,controller层的方法抛出异常.下面看代码.
package com.imooc.shoptest001.handle; import com.imooc.shoptest001.utils.JsonData; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; /** * 全局异常捕获 */ @ControllerAdvice public class ExceptionHandle { /** * ExceptionHandler 捕获什么异常 * ResponseBody 返回json格式 * @return */ @ExceptionHandler(value = Exception.class) @ResponseBody public JsonData handle(Exception ex){ ex.printStackTrace(); System.out.println(ex.toString()); return JsonData.error500(ex.getMessage()); } }
package com.imooc.shoptest001.utils; public enum JsonDataEnum { ERROR(-1,"失败"), SUCCESS(0,"成功"), ; private Integer code; private String msg; JsonDataEnum(Integer code,String msg){ this.code = code; this.msg = msg; } public Integer getCode() { return code; } public String getMsg() { return msg; } }
package com.imooc.shoptest001.utils; /** * 前台返回json类 */ public class JsonData<T> { /** * 返回状态 */ private boolean status; /** * 错误码/正确码 */ private Integer code; /** * 消息. */ private String msg; /** * 具体的内容. */ private T data; public static JsonData success(String msg,Object data){ JsonData jsonData = new JsonData(); jsonData.setMsg(msg); jsonData.setStatus(true); jsonData.setCode(200); jsonData.setData(data); return jsonData; } public static JsonData ok(){ JsonData jsonData = new JsonData(); jsonData.setStatus(true); jsonData.setCode(200); return jsonData; } public static JsonData error(Integer code,String msg){ JsonData jsonData = new JsonData(); jsonData.setStatus(false); jsonData.setCode(code); jsonData.setMsg(msg); return jsonData; } public static JsonData error500(String msg){ JsonData jsonData = new JsonData(); jsonData.setStatus(false); jsonData.setCode(500); jsonData.setMsg(msg); return jsonData; } public boolean isStatus() { return status; } public void setStatus(boolean status) { this.status = status; } public Integer getCode() { return code; } public void setCode(Integer code) { this.code = code; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public T getData() { return data; } public void setData(T data) { this.data = data; } }
原文:https://www.cnblogs.com/historylyt/p/10588658.html