{"data":{"id":"1","name":"jack"},"code":200,"message":"success"}
对于每次的数据返回处理,是不是很厌烦,每次都要封装对象,形成统一的返回格式
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;
}
@RestController
@RequestMapping("/base")
@ResponseResult
public class BaseController {
@GetMapping("")
public BaseMan getBaseMans(){
BaseMan baseMan=new BaseMan();
baseMan.setId("1");
baseMan.setName("jack");
return baseMan;
}
}
@Slf4j
@ControllerAdvice(annotations = {ResponseResult.class})
public class GlobalResponseHandler implements ResponseBodyAdvice
没有设置handler处理返回的结果
{"id":"1","name":"jack"}
处理后的结果
{"data":{"id":"1","name":"jack"},"code":200,"message":"success"}
这个设置处理流程是不够详细的,里面可能还会涉及到 异常抛出时的处理 流程。所以这只是最基本的处理思路,如果有用到,还需要更详细去设计处理流程,尽量考虑到方方面面的情况。
嘻嘻