新的路由方式
先来看第一个:路由方式的更新。
在之前的版本想要写一个接口必须的实现一个 WorkAction
;而且最麻烦的是一个实现类只能做一个接口。
因此也有朋友给我提过这个 issue。
于是改进后的使用方式如下:
是否有点似曾相识的感觉😊。
如上图所示,不需要实现某个特定的接口;只需要使用不同的注解即可。
同时也支持自定义 pojo
, cicada
会在调用过程中对参数进行实例化。
拿这个 getUser
接口为例,当这样请求时这些参数就会被封装进 DemoReq
中.
http://127.0.0.1:5688/cicada-example/routeAction/getUser?id=1234&name=zhangsan
同时得到响应:
{"message":"hello =zhangsan"}
实现过程也挺简单,大家查看源码便会发现;这里贴一点比较核心的步骤。
- 扫描所有使用
@CicadaAction
注解的类。
- 扫描所有使用
@CicadaRoute
注解的方法。
- 将他们的映射关系存入
Map
中。
- 请求时根据
URL
去Map
中查找这个关系。
- 反射构建参数及方法调用。
扫描类以及写入映射关系
请求时查询映射关系
反射调用这些方法
是否需要 IOC 容器
上面那几个步骤其实我都是一把梭写完的,但当我写到执行具体方法时感觉有点意思
了。
大家都知道反射调用方法有两个重要的参数:
obj
方法执行的实例。
args..
自然是方法的参数。