XDoc-Java 1.1.0 发布,Java 纯注释生成接口文档工具

栏目: 软件资讯 · 发布时间: 4年前

内容简介:1.1.0版本更新内容: 1. 代码结构重构,升级依赖包版本,同时各demo案例移动到smaples目录下 2. 增加对JFinal的支持 3.应大众要求,增加@paramObj注释标签支持 4.优化markdown格式输出 XDoc 基于Java注释的接口文档工...

1.1.0版本更新内容:

1. 代码结构重构,升级依赖包版本,同时各demo案例移动到smaples目录下

2. 增加对JFinal的支持

3.应大众要求,增加@paramObj注释标签支持

4.优化markdown格式输出

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 XDoc-Java 1.1.0 发布,Java 纯注释生成接口文档工具

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 返回信息的描述,内容为纯文本,仅用于展示


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Head First HTML and CSS

Head First HTML and CSS

Elisabeth Robson、Eric Freeman / O'Reilly Media / 2012-9-8 / USD 39.99

Tired of reading HTML books that only make sense after you're an expert? Then it's about time you picked up Head First HTML and really learned HTML. You want to learn HTML so you can finally create th......一起来看看 《Head First HTML and CSS》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

随机密码生成器
随机密码生成器

多种字符组合密码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码