公司的架构师开发了一套接口扫描工具类,我想着,如果自己以后开公司了可能也用得着,所以研究了下,整理出了下面的开发思路和相关技术代码。
API扫描工具类的主要开发思路如下:
1、定义接口上的注解;
2、引用注解
3、扫描注解
首先定义注解:
定义接口上的注解
关于注解:请参照下面的文章:
Java注解详解
Java注解之Retention、Documented、Target介绍
实用的java注解工具类
如果想要动态的修改注解的值【如动态切换数据源】,一般看来注解的值是不能动态修改的,但是借助特殊工具还是可以的,参照下面的文章:
JAVAssist—动态修改注解
引用注解
|
|
扫描注解
扫描注解的工具类是参考了别人的代码写出来的。
|
|
经过测试,证实这段代码对深层代码的递归扫描性能很高。测试的递归路径如下图所示:
另外在研究过程中尝试了自动解析API参数为JSON ,虽然最终以失败告终,失败的原因是写出来的代码无法适应参数中泛型以及泛型中属性名的动态匹配。下面是在尝试中总结出来的工具类:
扫描API中参数的类型工具类:
|
|
字符串转化为JAVA代码的工具类:
|
|
参考文章:java将字符串转换成可执行代码