在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对应每个客户端与服务器的请求
网友评论