封装restful

在restful这一层 要封装的东西比较多

1.request

首先封装一个requestContext的bean,@Param @Params @FormFile @FormFiles

这些注解可以打在controlller的方法上面,@Param定义传进来的参数,@FormFile 定义传进来的file

写一个类实现HandlerMethodArgumentResolver,复写supportsParameter,resolveArgument,

resolveArgument 返回requestContext,在contrller的方法参数就可以写这个参数,获取封装后的request的参数。

附件也可以获取。


2 converter

接口Converter, ConversionService

写一个实现类实现converter 注入到上面写的实现类,获取值的是就可以转换

3.exceptionhandler

实现HandlerExceptionResolver

复写 resolveException

预先定义好 一些entry   message,code

最后统一匹配异常判处json格式的errorcode

4 RequestMappingHandlerAdapter

写一个实现RequestMappingHandlerAdapter接口

复写afterPropertiesSe

覆盖Spring MVC类,用于转JSON.


5 HandlerMethodReturnValueHandler

写一个jsonreturnvaluehandler

利用  jsonserializer 去把返回值都转为json

JsonSerializerFactory 就是把@json定义好的字段 和  序列化解析器整合然后生成对应的json数据

这里说一下 flexjson.JSONSerializer

.exclude()

.include()

分别扩展了

flexjson.JSONContext flexjson.PathExpression   flexjson.JSONSerializer

6 HandlerInterceptorAdapter

写了一个关于记录日志的队列,每当有request请求,就把相关信息封装到一个item,里面去,然后add到队列里面去,这里要提一起,用了3个队列,设置一个flushed,如果是flused,把队列的全部item  使用掉,如果不是,设置了一个定值比如100, 每100个使用,

再写一个类,定时任务,然后从队列里面获取日志item 存储起来。

7 AttachmentResolver

该接口 分别有三个方法

store, reslove2read remove

1.本地存储,获取文件流,保存在服务器本地

2.fastdfs

org.csource.fastdfs.UploadCallback

org.csource.fastdfs.StorageClient ,org.csource.fastdfs.TrackerServer

原理是,通过TrackerServer 找到对应的storeserver,调用callback,把文件流存储到storeserver

下载也是一样的,通过trackerserver找到storeserver  把文件流获取返回


SubjectResolver

实现HandlerMethodArgumentResolver

返回Subject  通过Subject  获取用户相关信息

PermissionCheckInterceptor

实现HandlerInterceptorAdapter

获取method的@permit注解,定义的URL,判断该用户是否拥有这个权限

WebSocketDispacherHandler

实现TextWebSocketHandler接口

复写handleTextMessage

接受请求,利用session.send(message)返回信息

这里的session对应每个客户端与服务器的请求

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,900评论 25 708
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,841评论 18 139
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,192评论 4 61
  • Swift版本点击这里欢迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh阅读 25,522评论 7 249
  • 第1章 :“请你告诉我,这个设计图,你 是怎么做出来。” 楚叶第一次把设计图发给上司李荣丽...
    lwj在飞翔阅读 293评论 0 0