当前位置: 首页 > 软件库 > 开发工具 > Java开发工具 >

XDoc-Java

基于 Java 的代码注释
授权协议 MIT
开发语言 Java
所属分类 开发工具、 Java开发工具
软件类型 开源软件
地区 国产
投 递 者 赫连鸿振
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

XDoc, 是基于Java语言编写,提供将Java方法上的注释转成接口文档的工具.不同于sun doc生成的Java文档, XDoc只专注于对外接口层的文档转译, 基于原有的sun doc注解,加上扩展的一些,为使用者提供了更加丰富的注释功能,让更加快捷的生成接口文档,不需要再打开word等文档,按照繁琐的方式,将接口文档一点点加上去.

XDoc 基于Java注释的接口文档工具

  • 基于java注释生成接口文档-对代码无侵入,无需注解,纯代码注释
  • 支持SpringWeb, SpringBoot, JFinal
  • 文档输出格式支持markdown和离线/在线html等

为何使用XDoc?

  • 减少外部接口文档的另外编写,在编码过程就一起完成,减少外部维护工作量
  • 修改代码时,少掉翻看外部接口文档的过程,直接看代码注释
  • 接口文档同版本管理一起,可方便回退以及多环境多版本
  • 难道标准的注释不应该作为企业项目的必须规范吗?如果你的规范里没有接口这块的,那么,还不补上?如果补上的还能帮你生成文档,何乐而不为?

如何使用?

1.以SpringBoot为例:

<!--加入maven依赖-->
<dependency>
    <groupId>com.github.treeleafj</groupId>
    <artifactId>spring-boot-starter-xDoc</artifactId>
    <version>1.1.0</version>
</dependency>
@EnableXDoc //<--- 加上此注解以便启用XDOC在线HTML文档
@SpringBootApplication
public class TestApplication {

    public static void main(String[] args) {
        SpringApplication.run(TestApplication.class, args);
    }
}
#在application.properties配置项目源码的位置,直接在项目里启动时,如果是单模块的maven项目,默认可以不配置
xdoc.enable=true #是否启动XDoc,默认是true,生产环境建议改为false
xdoc.sourcePath=F:/java/project/xDoc/samples/sample-springboot/src/main/java   #源码路径,多个路径时用英文逗号隔开
xdoc.title=用户中心接口文档   #用于配置文档页面标题
xdoc.version=1.0   #标识接口文档的版本号

以上准备配置就都做好了

接下来,我们只需要像往常一样写个Controller,并写好注释:

/**
 * 用户模块
 *
 * @author treeleaf
 * @date 2017-03-03 10:11
 */
@Controller
@RequestMapping("api/user")
public class UserController {

    /**
     * 登录
     *
     * @param username 用户名|必填
     * @param password 密码
     * @return 当前登录用户的基本信息
     * @resp code 返回码(0000表示登录成功,其它表示失败)|string|必填
     * @resp msg 登录信息|string
     * @resp username 登录成功后返回的用户名|string
     */
    @ResponseBody
    @PostMapping("login")
    public Map<String, String> login(String username, String password) {
        Map<String, String> model = new HashMap<>();
        model.put("code", "0000");
        model.put("msg", "登录成功");
        model.put("username", username);
        return model;
    }


    /**
     * 用户注册
     *
     * @param user :username 用户名|必填
     * @param user :password 密码
     * @return 注册后生成的用户的基本信息
     * @respbody {"id":"123","password":"123456","username":"admin"}
     * @see User
     */
    @ResponseBody
    @RequestMapping(value = "register", method = {RequestMethod.POST, RequestMethod.PUT})
    User register(User user) {
        user.setId(UUID.randomUUID().toString());
        return user;
    }
}

写完之后,直接启动项目, 敲入地址: http://localhost:8080/xdoc/index.html demo

2.如果想生成离线文档怎么办?

支持html:

/**
 * 生成离线的HTML格式的接口文档
 */
@Test
public void buildHtml() throws Exception {
    /**注意!!!路径必须是要能扫描到源码工程的路径,执行生成的文件打开没有接口目录,说明没扫描到,请优先确认自己传入的路径是否正确!!!*/
    FileOutputStream out = new FileOutputStream(new File(userDir, "api.html"));
    XDoc xDoc = new XDoc(new File("F:/java/project/xDoc/samples/sample-springboot/src/main/java"), new SpringWebHttpFramework());
    xDoc.build(out, new HtmlForamt());
}

也支持markdown:

/**
 * 生成离线的Markdown格式的接口文档
 */
@Test
public void buildMarkdown() {
    /**注意!!!路径必须是要能扫描到源码工程的路径,执行生成的markdown如果没有接口内容,说明没扫描到,请优先确认自己传入的路径是否正确!!!*/
	
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    XDoc xDoc = new XDoc(new File("F:/java/project/xDoc/samples/sample-springboot/src/main/java"), new SpringWebHttpFramework());
    
    xDoc.build(out, new MarkdownFormat());

    System.out.println(out.toString());
}

如果不是SpringBoot,只是单纯的SpringWeb,或者是JFinal, 如何使用请参考samples目录下demo

现有注释标签用法:

  • @title 接口标题,如果不加这个,默认读的是接口注释上第一行的描述内容

  • @param 接口入参, 格式为: "参数名 参数描述|(参数类型)|(是否必填)" 其中"参数类型"可不填,默认是String, "是否必填"可不填,默认为非必填, "是否必填"的取值有必填(Y),非必填(N),具体常用的格式如下: username 用户名 username 用户名|必填 或者 username 用户名|Y username 用户名|非必填 或者 username 用户名|N username 用户名|String username 用户名|String|必填

    针对IDEA的在使用Java自身的@param注释注解时,如果上面的参数名在当前方法入参上是没有的,是会提示错误的,为了解决这种问题,XDoc支持在注释的参数名称前面加上冒号:来避开IDEA的检测,如: :username 用户名 或者 user :username 用户名

  • @paramObj 当觉得入参本身就在一个Dto中,但是要一个个@param去加会比较麻烦时,可以用@paramObj指定入参的Dto对象,用法同@see,但是@paramObj支持一个接口方法出现多个,同时,@param与@paramObj混用,@paramObj对象中的某个属性名与@param的参数名冲突时,会优先以@param的为准, 使用可参考samples中的AccountController.java

  • @resp 指定返回的参数,格式同@param

  • @respbody 指定返回数据的demo,暂只支持对json数据进行格式化,仅用于展示,使用可参考samples中的UserController.java

  • @see 指定返回的出参对象,类似@paramObj,不过一个是入参,一个是出参,一个方法只能出现一个@see,同时,跟@resp混用时有属性名冲突,以@resp的为准, 使用可参考samples中的AccountController.java

  • @return 返回信息的描述,内容为纯文本,仅用于展示

  • @IgnoreApi 这个是注解,不是放在注释上的,用于标注哪些接口不需要生成接口文档

  • 一.问题发现: 课本上提到“要学会给自己编写的程序生成API帮助文档”,但又没有说明具体的操作步骤。 二.分析: API帮助文档有什么用?这么理解吧:如果想告诉别人你的类如何使用,里面有什么方法,要什么参数的话,除了现场解释,最好的方法是什么呢? 对了,就是写一份说明!一般开头可以有这么几项: /** * 项目说明 * @author 作者 * @version 版本 * @param 参数 *

  • 有人搞过将带图片和表格的html标签转换为docx文档吗?我转换为doc文档 wps打开不显示图片 office2016可以 2013不可以 现在想换为docx文档 有没有实现的?XDOC-Word文档生成与预览 2019/11/12 13:25可以试试XDO 有人搞过将带图片和表格的html标签转换为docx文档吗?我转换为doc文档  wps打开不显示图片 office2016可以 2013不

  • 所需要的maven汇总: <repositories> <repository> <id>com.e-iceblue</id> <url>https://repo.e-iceblue.cn/repository/maven-public/</url> </repository> </repositories> <dependencies>

  • java实现word转pdf在线预览格式 前段时间的项目里涉及了此功能,调研过一些方案,踩过一些坑,一一总结在此。 java转pdf的方案很多,但是很多都要收费,转pdf也有一些格式方面的问题。 方案对比: poi格式错乱 aspose-words linux环境无法使用 documents4j linux环境无法使用 jacob 需要window环境 需要安装office Free Spire.

  • importorg.w3c.dom.Document;importorg.w3c.dom.Element;importorg.w3c.dom.NamedNodeMap;importorg.w3c.dom.NodeList;importorg.xml.sax.SAXException;importjavax.xml.parsers.DocumentBuilder;importjavax.xml.pa

  • 导入依赖 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId>

  • 若使用mvn的3版本,这可用在控制台中执行如下命令 mvn archetype:generate 进行快速构建java的maven开发项目, 构建过程如下 PS D:\code> mvn archetype:generate [INFO] Scanning for projects... [INFO] [INFO] ------------------< org.apache.maven:st

  • [求助]unreporter exception java.text.ParseException;must be caught or ... [求助]unreporterexceptionjava.text.ParseException;mustbecaughtordeclare unreporterexceptionjava.text.ParseException;mustbecaughtor

 相关资料
  • 问题内容: 有没有办法使此代码有效? LogonControl.java AuditHandler.java Endgame是,每次调用login()时,也会调用带有适当的audittype的audit()。 我想AOP可能是解决这个问题的方法,但是我希望它尽可能简单(我看过的AspectJ教程通常都有非常复杂的注释)。 注意:我不需要预先定义调用audit的方法,我正在为可扩展的框架编写它,而其

  • 本文向大家介绍基于Java代码配置MyBatis Generator,包括了基于Java代码配置MyBatis Generator的使用技巧和注意事项,需要的朋友参考一下 使用MyBatis Generator生成器时,有时候没办法使用xml形式的配置文件,比如将Maven项目设置成pom打包方式(<packaging>pom</packaging>)!由于Maven的工作机制对于打包方式为pom

  • 本文向大家介绍java基于swing实现的连连看代码,包括了java基于swing实现的连连看代码的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了java基于swing实现连连看代码。分享给大家供大家参考。 主要功能代码如下:

  • 当我使用Spring framework时,我经常看到2个术语基于Java和基于注释的配置/自动生成。 如果它们不一样,你能告诉我它们之间有什么不同吗?

  • 本文向大家介绍Java基于swing实现的弹球游戏代码,包括了Java基于swing实现的弹球游戏代码的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Java基于swing实现的弹球游戏代码。分享给大家供大家参考。 主要功能代码如下: 运行效果如下图所示: 希望本文所述对大家的Java程序设计有所帮助。

  • 本文向大家介绍java基于swing实现的五子棋游戏代码,包括了java基于swing实现的五子棋游戏代码的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了java基于swing实现的五子棋游戏代码。分享给大家供大家参考。 主要功能代码如下: