前言:写完通用的toString方法后,对Java的反射有了进一步的了解,想到了之前在项目中写的一个数据模拟功能,于是想趁热打铁再改进一下。用了三天时间来规划、编码和测试,目前已完成,下面说明一下这个工具的功能、局限性以及使用说明。
预计周六将源码上传到github进行共享。
一、工具说明
优点:解决了前后端分离开发时,接口数据提供不及时的问题。在前后端开发人员定义完接口及数据结构后,后端开发人员只需简单地配置即可使接口返回前端开发人员期待的随机数据。
缺点:当数据结构中出现Map类型时,无法进行数据模拟。
二、使用步骤说明
- 前后端开发人员定义完接口及相应的数据结构。如 用户信息接口,请求url:/user;对应的返回数据类型:com.rambo.domain.Person
前端开发人员根据数据结构,编写其期望的数据列表,也可以不编写该列表,工具将使用默认的数据进行模拟。如:
age=23,24,98
int=2,3,6,8,9,0,232,2452,321
boolean=0,1
byte=2,3,4
double=0.1,3.9
text=你好,世界,Hello
image=http://www.baidu.com/image1
url=http://www.baidu.com后端开发人员将数据结构编码,在相应的属性上加上定义的注解,编写配置文件,并编写基本的Controller,将工具的拦截器设置到spring配置文件中。注意将配置文件的编码格式使用notepad++等工具修改为UTF-8
- 前端在请求url时,加上mock=mock的参数,即可得到模拟数据。
三、配置文件说明
配置文件包括:
- 1.请求路径和返回的数据类型的匹配;
- 2.各个类型的默认数据列表;
- 3.指定的url和数据类型的数据列表。
如下图所示:
请求路径和返回的数据类型的匹配
1:请求path
2:对应的返回类型
3:返回类型是否需要List(非必填)
4:返回类型指定的数据列表(非必填)各个类型的默认数据列表
各个类型的数据列表,使用英文逗号进行分割,各个类型的key是固定的,如下图
- 指定的url和数据类型的数据列表
同上。
四、解析过程说明
本工具,拦截所有的请求,如果参数中有mock,那么就会调用MockAnnotationUtil.parseObject(BeanTypeValueWrapper)方法生成一个url对于的数据类型的实例对象,然后将对象set到request中,由Controller将对象取出并处理后返还给前端。
1. 拦截器
public class MockInterceptor implements HandlerInterceptor {
private static final String MOCK = "mock";
@Override
public boolean