From 5346d02ac2ac563d88e7b70473409eb254743012 Mon Sep 17 00:00:00 2001 From: JeffLi1993 Date: Tue, 14 Mar 2017 11:48:12 +0800 Subject: [PATCH] =?UTF-8?q?Spring=20Boot=20HTTP=20over=20JSON=20=E7=9A=84?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E7=A0=81=E5=BC=82=E5=B8=B8=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 +- .../org/spring/springboot/Application.java | 20 +++++++ .../constant/CityErrorInfoEnum.java | 28 ++++++++++ .../result/GlobalErrorInfoException.java | 23 ++++++++ .../result/GlobalErrorInfoHandler.java | 22 ++++++++ .../spring/springboot/result/ResultBody.java | 52 +++++++++++++++++++ .../result/base/ErrorInfoInterface.java | 11 ++++ .../springboot/web/ErrorJsonController.java | 19 +++++++ 8 files changed, 178 insertions(+), 1 deletion(-) create mode 100644 springboot-validation-over-json/src/main/java/org/spring/springboot/Application.java create mode 100644 springboot-validation-over-json/src/main/java/org/spring/springboot/constant/CityErrorInfoEnum.java create mode 100644 springboot-validation-over-json/src/main/java/org/spring/springboot/result/GlobalErrorInfoException.java create mode 100644 springboot-validation-over-json/src/main/java/org/spring/springboot/result/GlobalErrorInfoHandler.java create mode 100644 springboot-validation-over-json/src/main/java/org/spring/springboot/result/ResultBody.java create mode 100644 springboot-validation-over-json/src/main/java/org/spring/springboot/result/base/ErrorInfoInterface.java create mode 100644 springboot-validation-over-json/src/main/java/org/spring/springboot/web/ErrorJsonController.java diff --git a/pom.xml b/pom.xml index 7f500b8..843a0e9 100644 --- a/pom.xml +++ b/pom.xml @@ -15,6 +15,8 @@ springboot-freemarker springboot-dubbo-server springboot-dubbo-client + springboot-redis + springboot-validation-over-json - \ No newline at end of file + diff --git a/springboot-validation-over-json/src/main/java/org/spring/springboot/Application.java b/springboot-validation-over-json/src/main/java/org/spring/springboot/Application.java new file mode 100644 index 0000000..5070937 --- /dev/null +++ b/springboot-validation-over-json/src/main/java/org/spring/springboot/Application.java @@ -0,0 +1,20 @@ +package org.spring.springboot; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * Spring Boot 应用启动类 + * + * Created by bysocket on 16/4/26. + */ +// Spring Boot 应用的标识 +@SpringBootApplication +public class Application { + + public static void main(String[] args) { + // 程序启动入口 + // 启动嵌入式的 Tomcat 并初始化 Spring 环境及其各 Spring 组件 + SpringApplication.run(Application.class,args); + } +} diff --git a/springboot-validation-over-json/src/main/java/org/spring/springboot/constant/CityErrorInfoEnum.java b/springboot-validation-over-json/src/main/java/org/spring/springboot/constant/CityErrorInfoEnum.java new file mode 100644 index 0000000..4c46e1d --- /dev/null +++ b/springboot-validation-over-json/src/main/java/org/spring/springboot/constant/CityErrorInfoEnum.java @@ -0,0 +1,28 @@ +package org.spring.springboot.constant; + +import org.spring.springboot.result.base.ErrorInfoInterface; + +/** + * Created by bysocket on 14/03/2017. + */ +public enum CityErrorInfoEnum implements ErrorInfoInterface { + PARAMS_NO_COMPLETE("000001","params no complete"), + CITY_EXIT("000002","city exit"); + + private String code; + + private String message; + + CityErrorInfoEnum(String code, String message) { + this.code = code; + this.message = message; + } + + public String getCode(){ + return this.code; + } + + public String getMessage(){ + return this.message; + } +} diff --git a/springboot-validation-over-json/src/main/java/org/spring/springboot/result/GlobalErrorInfoException.java b/springboot-validation-over-json/src/main/java/org/spring/springboot/result/GlobalErrorInfoException.java new file mode 100644 index 0000000..b11c573 --- /dev/null +++ b/springboot-validation-over-json/src/main/java/org/spring/springboot/result/GlobalErrorInfoException.java @@ -0,0 +1,23 @@ +package org.spring.springboot.result; + +import org.spring.springboot.result.base.ErrorInfoInterface; + +/** + * Created by bysocket on 14/03/2017. + */ +public class GlobalErrorInfoException extends Exception { + + private ErrorInfoInterface errorInfo; + + public GlobalErrorInfoException (ErrorInfoInterface errorInfo) { + this.errorInfo = errorInfo; + } + + public ErrorInfoInterface getErrorInfo() { + return errorInfo; + } + + public void setErrorInfo(ErrorInfoInterface errorInfo) { + this.errorInfo = errorInfo; + } +} diff --git a/springboot-validation-over-json/src/main/java/org/spring/springboot/result/GlobalErrorInfoHandler.java b/springboot-validation-over-json/src/main/java/org/spring/springboot/result/GlobalErrorInfoHandler.java new file mode 100644 index 0000000..04884b4 --- /dev/null +++ b/springboot-validation-over-json/src/main/java/org/spring/springboot/result/GlobalErrorInfoHandler.java @@ -0,0 +1,22 @@ +package org.spring.springboot.result; + +import org.spring.springboot.result.base.ErrorInfoInterface; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +import javax.servlet.http.HttpServletRequest; + +/** + * Created by bysocket on 14/03/2017. + */ +@RestControllerAdvice +public class GlobalErrorInfoHandler { + + @ExceptionHandler(value = GlobalErrorInfoException.class) + public ResultBody errorHandlerOverJson(HttpServletRequest request, + GlobalErrorInfoException exception) { + ErrorInfoInterface errorInfo = exception.getErrorInfo(); + ResultBody result = new ResultBody(errorInfo); + return result; + } +} diff --git a/springboot-validation-over-json/src/main/java/org/spring/springboot/result/ResultBody.java b/springboot-validation-over-json/src/main/java/org/spring/springboot/result/ResultBody.java new file mode 100644 index 0000000..34068a5 --- /dev/null +++ b/springboot-validation-over-json/src/main/java/org/spring/springboot/result/ResultBody.java @@ -0,0 +1,52 @@ +package org.spring.springboot.result; + +import org.spring.springboot.result.base.ErrorInfoInterface; + +/** + * Created by bysocket on 14/03/2017. + */ +public class ResultBody { + /** + * 响应代码 + */ + private String code; + + /** + * 响应消息 + */ + private String message; + + /** + * 响应结果 + */ + private T result; + + public ResultBody(ErrorInfoInterface errorInfo) { + this.code = errorInfo.getCode(); + this.message = errorInfo.getMessage(); + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public T getResult() { + return result; + } + + public void setResult(T result) { + this.result = result; + } +} diff --git a/springboot-validation-over-json/src/main/java/org/spring/springboot/result/base/ErrorInfoInterface.java b/springboot-validation-over-json/src/main/java/org/spring/springboot/result/base/ErrorInfoInterface.java new file mode 100644 index 0000000..b65eb50 --- /dev/null +++ b/springboot-validation-over-json/src/main/java/org/spring/springboot/result/base/ErrorInfoInterface.java @@ -0,0 +1,11 @@ +package org.spring.springboot.result.base; + +/** + * 错误码接口 + * + * Created by bysocket on 13/03/2017. + */ +public interface ErrorInfoInterface { + String getCode(); + String getMessage(); +} diff --git a/springboot-validation-over-json/src/main/java/org/spring/springboot/web/ErrorJsonController.java b/springboot-validation-over-json/src/main/java/org/spring/springboot/web/ErrorJsonController.java new file mode 100644 index 0000000..02738c8 --- /dev/null +++ b/springboot-validation-over-json/src/main/java/org/spring/springboot/web/ErrorJsonController.java @@ -0,0 +1,19 @@ +package org.spring.springboot.web; + +import org.spring.springboot.constant.CityErrorInfoEnum; +import org.spring.springboot.result.GlobalErrorInfoException; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * + * Created by bysocket on 16/4/26. + */ +@RestController +public class ErrorJsonController { + + @RequestMapping("/param") + public String errorJsonParams() throws GlobalErrorInfoException { + throw new GlobalErrorInfoException(CityErrorInfoEnum.PARAMS_NO_COMPLETE); + } +}