第一步:自定义一个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 = "&params={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();

  }

   }

第四步:前端界面展示