-
Notifications
You must be signed in to change notification settings - Fork 2
Touch 0.0.8 版本文档
- 你还在这样测试接口吗? 写一个Servlet/API/Controller?
然后这样:
测试:
IRecommendService.getEngineRecFeeds()
接口:
- 你还在这样给线上留后门吗?
然后这样:
手动触发缓存定时加载的
LoadBlacklistTask.scheduleTask()
方法:
这你就太OUT啦, 有写这些代码的时间还不如去看几集非诚勿扰, 下面我们就让你彻底解放双手!
是不是总想到线上的接口/方法摸一把?
- 现在 你只需这样:
留后门.
- 或者这样:
接口测试.
- 然后就可以这样:
- 或者这样
然后你的方法就完美的执行了.
看到了吗? 不是Spring MVC(我擦, 那也太重了)、不是Vap(那也太反人类了, 一个方法只能有两个对象[参数], 我就是想多搞几个, 你打我呀!), 我们的名字叫Touch, 来大家跟我一起喊: "Touch 摸, Touch 摸, Touch 摸 ..."(后面的小朋友你们记住了吗).
我们的目标是在你测试接口和给线上留后门的时候彻底解放右手(😯 噢不, 是双手...). 我们会根据你在浏览器输入的 URI+QueryString 自动映射成类中对应的 方法名+参数 (只要该方法被打上了@Touch
注解, 该类就变成了OnTouch类, 你就可以时不时的上去摸一把😍).
我们怎么得到他呢? 不用998, 不用99.8, 只要0.0.8(-SNAPSHOT), 马上带回家. 既能么么哒, 又能啪啪啪.
- 来, 约个炮先: pom.xml
<groupId>com.vdian.touch</groupId>
<artifactId>touch</artifactId>
<version>0.0.8-SNAPSHOT</version>
- web.xml
on_touch_class
参数配置你想Touch的类
-
@Touch
: 为你想要touch的方法打上标, 然后它就属于你啦
这样, 你就可以愉快的touch一把:
@Touch
注解内提供了touchPattern
参数, 用于区分同名函数, 但要注意touchPattern
要和浏览器内的URI对应起来:
- touchPattern
- URI
-
参数映射 在前面可以看到我们是用json与方法参数一一映射的, json内的key为方法的参数名. 如果你不能做到一一映射, 那发生啥我也不知道(服务器会不会炸了??!!).
-
@TouchParam注解 这个注解是为了应付Java的泛型的, 由于Java将字节码加载到JVM后, 泛型就被擦除了, 我试了好多方法都拿不到真实的类型信息, 因此你的方法参数如果是
List<Xxx>
,Collection<Xxx>
的话, 还是加上这个注解吧.
另外, 别听盼爷鬼扯他能拿到泛型信息(我就不信他是到Class他老妈那儿拿的!), 我早上跑了下vbox的测试用例, 凡是要拿调用真实对象的方法的, 全挂了...
- 自定义Converter
Converter
大部分情况下是不用配的, Touch默认为我们绑定了很多类型:- String -> Java基础类型
- String -> String
- String -> Date("yyyy-MM-DD HH:MM:SS")
- 以及 json字符串 -> JavaObject
除非在一些特殊情况下, 如String -> Calender, 需要我们手动开发一个
Converter
并配置到web.xml中. 样例在我的测试用例代码中有(https://github.com/feiqing/Touch/blob/master/src/main/java/com/vdian/touch/converter/DateConverter.java).
-
方法参数名 由于现在由QueryString映射方法参数时拿到的参数名是由javassist从JVM虚拟机栈内局部变量表中获取的, 性能说实话我也不知道... 将来我们如果需要提升性能, 可以做成类似MyBatis的
@Param
的这种注解形式: -
方法参数映射功能 如果还想提供更强大的功能, 可以参考Spring MVC的
@RequestParam
如: -
如果 如果将来我们的这个小工具能够做到完善、成熟、高性能, 就可以用作一个通用的Dubbo转HTTP的工具, 我们只需编写Dubbo代码, 把想要开放给HTTP调用(前端?北京?), 就可在方法前加
@Touch
注解. 不用再按照API的规范书写Servlet代码.
- 参考 Javassist获取字节码代码主要参考这两篇博客, 有兴趣的同学可以读一下:
- by 攻城师@翡青