使用 @ControllerAdvice & ResponseBodyAdvice 拦截Controller方法默认返回参数,统一处理返回值/响应体
首先提供一个类使用@ControllerAdvice 注解 并实现implements ResponseBodyAdvice 这样就可以对结果进行统一的进行处理;
对结果统一进行处理的目的:
我们经常在controller对结果封装成统一的返回格式如:ResultData{success:true/false,content:’’} ,如果有ResponseBodyAdvice我们就连这一步也省了;返回的结果会自动的封装到ResultData中的content中;这样controller就可以专注于处理业务逻辑,不在需要关注结果的封装;
同时借助异常的统一处理逻辑我们的代码就可以正书写;
Note right of ResultBodyAdvice: 如果是正常的业务逻辑对返回的Vo进行封装成统一的结果格式{success:true,content:content}
Note right of ExceptionHanlder: 如果错误直接爆出异常并对异常和错误信息进行封装
如果web从同时存在@ExceptionHandler 执行顺序是 controller -> 如果由异常执行异常处理器 最后才会执行ResponseBodyAdvice