# apiDocGenerator **Repository Path**: dreamlikeocean/api-doc-generator ## Basic Information - **Project Name**: apiDocGenerator - **Description**: 利用javadoc生成springmvc的接口文档 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-10-06 - **Last Updated**: 2021-11-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # apiDocGenerator #### 介绍 利用javadoc生成springmvc的接口文档 ### 如何使用 ```java //参数为controller包地址(.java),会扫描其下所有类 RootDoc doc = JavaDocLetUtil.generateControllersRootDoc("***"); //获取其下所有controller的信息包括class及对应javadoc注释 //和接口对应方法method及javadoc注释 ControllerRootDocResolver resolver = new ControllerRootDocResolver(doc); List controllerInfoList = resolver.resolver(); //实现你自己的输出方式 CommentOutput output = new CommentOutput() { @Override public void out(List list) { //todo } }; //或者使用我写好的输出为txt文件 new DefaultTxTOutput("") .out(controllerInfoList); ``` ### 涉及到的实体类 ```java public class MethodComment { //对应接口的方法,类型为java.lang.reflect.Method; private Method method; //放置于方法上的注释,不包括标签及其注释 private String methodComment; //name:comment //参数名为key,参数的注释为value private Map paramComment; //对返回值的注释,即@return标签的内容 private String returnDesc; //@otherDesc标签的内容 private String otherDesc; } public class ClassComment { //当前controller类的反射 private Class aClass; //类上的注释 private String classComment; } //对于以上的封装,一个controller对应一个ControllerInfo @Data public class ControllerInfo{ private ClassComment controllerClass; private List uriInfoList; public ControllerInfo(ClassComment classComment, List list){ controllerClass = classComment; initUriInfoList(classComment, list); } private void initUriInfoList(ClassComment classComment,List list){ String[] rootUris; RequestMapping rootUriRequestMapping = classComment.getAClass().getAnnotation(RequestMapping.class); if (rootUriRequestMapping == null) { rootUris = new String[]{""}; }else { rootUris = rootUriRequestMapping.value(); } this.uriInfoList = list.stream() .map(methodComment -> new UriInfo(rootUris, methodComment)) .collect(Collectors.toList()); } } //过长建议看源文件 public class UriInfo { private String[] uris; private RequestMethod[] requestMethod; private String[] headers; private String[] consumes; private String[] produces; private MethodComment methodComment; } ``` ### 注意事项 1,必须和你的工程文件在一个jvm中启动,因为期间涉及到了对有关controller,实体类等的反射 2,其读取的是.java文件,.class无注释 ### 我对某些实现的做法 请看DefaultTxTOutput类