为SpringBoot写一个简单的Response返回数据处理
{"data":{"id":"1","name":"jack"},"code":200,"message":"success"}
为SpringBoot写一个简单的Response返回数据处理
对于每次的数据返回处理,是不是很厌烦,每次都要封装对象,形成统一的返回格式
return ResultVO.success(i);
这次通过aop思想统一处理
@ControllerAdvice ,这个注解,这是一个增强的 Controller。使用这个 Controller ,可以实现三个方面的功能:
- 全局异常处理
- 全局数据绑定
- 全局数据预处理
灵活使用这三个功能,可以帮助我们简化很多工作,需要注意的是,这是 SpringMVC 提供的功能,在 Spring Boot 中可以直接使用,下面分别来看。
一、首先定义我们的注解,以便标识哪个类,哪个方法需要用到自动封装处理
import java.lang.annotation.*;/*
* 返回数据封装
* 第一步注解
* */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE,ElementType.METHOD})
@Documented
public @interface ResponseResult {
}
二、设置用于测试的返回数据实体类以及用户实体
@Data
public class Result {private Object data;private Integer code;private String message;public Result(Object data, Integer code, String message) {this.data = data;this.code = code;this.message = message;}public static Result success(Object data) {return new Result(data,200,"success");}public static Result success(Object data, Integer code, String message) {return new Result(data,code,message);}public static Result fail(Object data, Integer code, String message) {return new Result(data,code,message);}
}
@Data
public class BaseMan {String id;String name;
}
三、设置一个controller,方便用于实际测试
@RestController
@RequestMapping("/base")
@ResponseResult
public class BaseController {@GetMapping("")public BaseMan getBaseMans(){BaseMan baseMan=new BaseMan();baseMan.setId("1");baseMan.setName("jack");return baseMan;}
}
四、设置一个handler处理器,处理这些封装事务
@Slf4j
@ControllerAdvice(annotations = {ResponseResult.class})
public class GlobalResponseHandler implements ResponseBodyAdvice
测试请求
没有设置handler处理返回的结果
{"id":"1","name":"jack"}处理后的结果
{"data":{"id":"1","name":"jack"},"code":200,"message":"success"}
这个设置处理流程是不够详细的,里面可能还会涉及到 异常抛出时的处理 流程。所以这只是最基本的处理思路,如果有用到,还需要更详细去设计处理流程,尽量考虑到方方面面的情况。
嘻嘻
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
