Spring学习笔记-Spring mvc 统一返回固定格式JSON数据到前端
spring mvc 可以通过@ContorllerAdvice 注解实现对控制器增强来实现固定格式JSON数据的返回。一方面通过定义实现ResponseBodyAdvice接口的实现类来处理一般正常的返回结果,另一方面通过@ExceptionHandler注解来处理异常数据返回的固定格式。
-
定义返回固定JSON格式的泛型类
@Data @AllArgsConstructor @NoArgsConstructor public class BaseResponse<T> { private Integer status; private String message; private T data; /** * 对成功返回的数据进行封装,转化成固定格式对象 * * @param data 要封装的对象 * @return 固定格式的对象 */ public static <T> BaseResponse<T> ok(@NonNull T data){ return new BaseResponse<>(HttpStatus.OK.value(), HttpStatus.OK.getReasonPhrase(), data); } }
-
定义全局一般正常结果controller增强类,通过使用@ControllerAdvice和实现ResponseBodyAdvice,进而重写beforeBodyWrite方法来实现将返回的对象封装为固定格式的对象,然后转化为json格式。
@ControllerAdvice public class CommResultControllerAdvice implements ResponseBodyAdvice { @Override public boolean supports(MethodParameter methodParameter, Class aClass) { // aClass能否强制转化为MappingJacksonValue return MappingJacksonValue.class.isAssignableFrom(aClass); } @Override public Object beforeBodyWrite(Object body, MethodParameter methodParameter, MediaType mediaType, Class aClass, ServerHttpRequest serverHttpRequest, Serve