当前位置: 首页 > news >正文

谈谈springmvc的ResponseBodyAdvice

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

最近在工作中遇到一个问题:我们正在开发的项目要求新版本以后的接口返回值要加密,并且要兼容以前老版本的接口(就是老版本接口不加密)。以前有个项目倒是有过类似的做法,使用的是aop实现。aop固然能够达到实现,但查看spring文档就会发现,spring早就为我们预留了实现接口,比aop更加方便。

spring的实现是ResponseBodyAdvice,顾名思义,请求返回值增强。

实现如下:

@ControllerAdvice(basePackages = "com.test")
public class EncryptResponseAdvice implements ResponseBodyAdvice<Object> {

  
    @Override
    public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
        return true;
    }

    @Override
    public Object beforeBodyWrite(Object body, MethodParameter returnType,
            MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType,
            ServerHttpRequest request, ServerHttpResponse response) {
        //先做版本判断,然后加密处理
       
        return body;
    }
}

ResponseBodyAdvice还可以实现jsonp,具体的类spring已经存在。

其实aop也完全可以实现,但既然spring已经提供了此功能,就最好用它的。不得不说,spring的扩展性还是挺强大的。

 

转载于:https://my.oschina.net/emperror/blog/782284

相关文章:

  • C语言之从内存角度理解不同类型的变量
  • Android 利用线程运行栈StackTraceElement设计Android日志模块
  • .Net中ListT 泛型转成DataTable、DataSet
  • linux线程的实现【转】
  • JAVA设计模式
  • 你知道市面上机器人都用哪些操作系统吗【转】
  • ArcGIS安装错误1402
  • 前端的学习
  • .NET 表达式计算:Expression Evaluator
  • 2016-11-10试题解题报告
  • Java中的Random()函数
  • SSD硬盘的4K对齐
  • 《深入理解Java7核心技术与最佳实践》读书笔记(1.1)---Project Coin介绍
  • 关闭CENTOS不必要的默认服务
  • 改变的六条规则
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • Django 博客开发教程 8 - 博客文章详情页
  • Facebook AccountKit 接入的坑点
  • Github访问慢解决办法
  • JavaScript DOM 10 - 滚动
  • Java小白进阶笔记(3)-初级面向对象
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • NSTimer学习笔记
  • React-redux的原理以及使用
  • vue学习系列(二)vue-cli
  • 闭包,sync使用细节
  • 搭建gitbook 和 访问权限认证
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 前端性能优化——回流与重绘
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 小李飞刀:SQL题目刷起来!
  • 原生 js 实现移动端 Touch 滑动反弹
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • AI算硅基生命吗,为什么?
  • 湖北分布式智能数据采集方法有哪些?
  • # centos7下FFmpeg环境部署记录
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #、%和$符号在OGNL表达式中经常出现
  • #控制台大学课堂点名问题_课堂随机点名
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • $.extend({},旧的,新的);合并对象,后面的覆盖前面的
  • (1)(1.13) SiK无线电高级配置(五)
  • (33)STM32——485实验笔记
  • (ibm)Java 语言的 XPath API
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (十六)Flask之蓝图
  • (顺序)容器的好伴侣 --- 容器适配器
  • (原)Matlab的svmtrain和svmclassify
  • .Net 4.0并行库实用性演练
  • .NET Project Open Day(2011.11.13)
  • .NET 材料检测系统崩溃分析