SpringMvc-ResponseBodyAdvice接口与@ControllerAdvice注解
作用:对本次请求的controller的原返回值进行处理,然后返回自定义的返回值
注:Spring中是先根据元返回值查询HttpMessageConverter,然后再走ResponseBodyAdvice,所以我们修改了元返回值之后,还要考虑之前的这个MessageConverter是否支持新的自定义返回值,所以此时应该将通用转换器jackson的那个放到转换器最前面
下面是代码示例,首先创建一个返回值类
public class MyResult {private int status;
}
1.创建一个类A,implements ResponseBodyAdvice接口
2.在类A上加注解@ControllerAdvice,不能是@Component等其他注入注解
@ControllerAdvice
public class ValidException implements ResponseBodyAdvice{@Overridepublic boolean supports(MethodParameter returnType, Class converterType) {return true;}// 参数body就是controller原返回值// 返回值Object是本次请求实际返回去的值@Overridepublic Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType,Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {if(body.getClass()!= MyResult.class){return new MyResult();}return body;}
}
之前也说了,如果原返回值是stirng,则spring会选择StringMessageConvert,所以我们选择万能的jackson转换器,需要修改默认转换区顺序
@Component
public class MessageConvert implements WebMvcConfigurer {@Overridepublic void extendMessageConverters(List<HttpMessageConverter<?>> converters) {// 我使用的版本最后一个转换器是jackson,所以我直接把最后一个拿到最前面HttpMessageConverter<?> con = converters.get(converters.size() - 1);converters.add(0, con);System.out.println(converters);}
}
SpringMvc-ResponseBodyAdvice接口与@ControllerAdvice注解相关推荐
- 使用 @ControllerAdvice 和 实现ResponseBodyAdvice接口, 拦截Controller方法默认返回参数,统一处理返回值/响应体
使用 @ControllerAdvice 和 实现ResponseBodyAdvice接口, 拦截Controller方法默认返回参数,统一处理返回值/响应体 1.Controller代码 以下是Co ...
- exceptionhandler注解_SpringMVC 中 @ControllerAdvice 注解的三种使用场景!
@ControllerAdvice ,很多初学者可能都没有听说过这个注解,实际上,这是一个非常有用的注解,顾名思义,这是一个增强的 Controller.使用这个 Controller ,可以实现三个 ...
- spring的@ControllerAdvice注解
@ControllerAdvice注解是Spring3.2中新增的注解,学名是Controller增强器,作用是给Controller控制器添加统一的操作或处理. 对于@ControllerAdvic ...
- SpringMVC全局乱码过滤器、注解@RequestParam、自定义类型转换器
目录 配置全局乱码过滤器 参数绑定注解@RequestParam 注解@RequestParam的参数使用说明 获得Restful风格的参数 自定义类型转换器 自定义转换器的开发步骤: 获得Servl ...
- @ResponseStatus @ExceptionHandler @ControllerAdvice注解使用
@ResponseStatus 一.用在@RequestMapping上 定义接口响应状态码 二.用在@ExceptionHandler同级上 定义异常处理完成后的响应状态码 三.用在@Control ...
- SpringMVC集成Hibernate Validator进行注解式的参数校验——让代码更少、更加专注于业务逻辑
SpringMVC集成Hibernate Validator进行注解式的参数校验 --让代码更少.更加专注于业务逻辑 1 问题背景: 参数验证是一个常见的问题,例如验证用户输入的密码是否为空.邮箱是否 ...
- @ControllerAdvice注解(全局异常捕获)
背景 @ControllerAdvice 注解 通常用于定义@ExceptionHandler, @InitBinder和@ModelAttribute 适用于所有@RequestMapping方法的 ...
- spring mvc异常统一处理(ControllerAdvice注解)
spring mvc异常统一处理(ControllerAdvice注解) 参考文章: (1)spring mvc异常统一处理(ControllerAdvice注解) (2)https://www.cn ...
- Spring boot异常统一处理方法:@ControllerAdvice注解的使用、全局异常捕获、自定义异常捕获
Spring boot异常统一处理方法:@ControllerAdvice注解的使用.全局异常捕获.自定义异常捕获 参考文章: (1)Spring boot异常统一处理方法:@ControllerAd ...
最新文章
- 从一致性hash到ceph crush算法演进图谱(持续更新)
- 如何利用 C# 爬取「猫眼电影专业版:票房」数据!
- linux清空文件内容
- iOS 模型数组去重复
- java.sql.SQLException: ORA-00911: 无效字符 解决方法
- 雷电交加,雨水倾泻--北京
- 嘀嗒公司被约谈 要求全面暂停进出京跨城网约车、顺风车等业务
- Spring Boot : SpringApplicationRunListener
- 五分钟学会python编程_每天五分钟python编程:生成器技术是python语言最强大的技术之一...
- 利用MATLAB仿真最小发射功率下WSN的连通性和覆盖率
- cmd 下通过NTML代理访问Maven 库
- 只知道人工智能远远不够 下一件大事将是边缘计算!
- 【2018-2019 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) E】Cops And Roobers【最小割】
- coturn源码解析
- lbj学习日记 07 函数基础
- 目标板(linux)与PC 网卡 直连(TFTP)
- esp32 采集某个路由器信号强度
- Nodejs全方位入门
- 大数据学习必备 | 推荐几个牛X 的 github 项目,助你事半功倍
- 区块链公链生态-赛道分类
热门文章
- Elastic-Job项目启动后,控制台一直报Cron表达式有误且Cron表达式与当前配置的表达式不一样
- swagger的使用(com.spring4all)
- IDEA找到所有的断点
- Java中string中hashcode_为什么String中的Java hashCode()使用31作为乘数?
- 【数据分析】Python-NumPy模块的使用
- iplatui---弹窗
- java4android代码_Android逆向-java代码基础(4)
- 复旦考研计算机技术,复旦大学计算机技术(专业学位)考研难吗
- sourceTree对git的新建项目、储藏代码、切换分支、回滚代码、提交代码
- datetime(0) NULL DEFAULT NULL报错