第一步:自定义一个API注解
package com.common.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface ApiDescAnnotation
{
String apiName();
String apiDescription() default "接口描述";
String [] inputParams() default {};
String [] outputParams() default {};
String [] errorParams() default{};
boolean toPage() default false;
String example() default "暂时没有添加示例!";
InputFieldValidator [] validators() default{};
EditVersions [] editversions() default{};
}
第二步:为指定的类添加注解
@ApiDescAnnotation(
apiName = "redistest",
apiDescription = "redistest",
example = "¶ms={key:\"xxxx\",val:\"xxxxx\"}",
inputParams = {
"key","key",
"val","val",
},
outputParams = {
"code","状态码"
},
errorParams = {
"code","状态码",
"message","处理结果"
}
)
@Component("testRedisApiProcesser")
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class TestRedisApiProcesser extends BaseApiProcesser
第三步:系统初始化时获取所有带API注解的类和方法
ApplicationContext app = WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
String [] beans = app.getBeanDefinitionNames();
for(String bean:beans)
{
try
{
Object obj = app.getBean(bean);
ApiDescAnnotation annotation = (ApiDescAnnotation)obj.getClass().getAnnotation(ApiDescAnnotation.class);
if(annotation != null)
{
ApiDesc desc = new ApiDesc();
desc.setApiDesc(annotation.apiDescription());
desc.setApiName(annotation.apiName());
desc.setFuncName(key.replaceAll("ApiProcesser", ""));
desc.setExample(annotation.example());
apis.add(desc);
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
第四步:前端界面展示