在国内,dubbo已经成为很多互联网公司在高并发分布式场景下rpc框架的首选。Dubbo自开源以来经历了很多过程。沉寂多年后,2017年9月,阿里巴巴宣布重启dubbo项目。到2018年2月,阿里将dubbo捐赠给Apache基金会,经过孵化,dubbo成功成为Apache的顶级项目。当然,本文的重点不是介绍dubbo的使用,而是介绍如何使用smart-doc工具生成dubbo的rpc内部接口文档。Smart-doc由于其基于注解和java接口定义自动推导的理念,自开源以来就受到了国内众多开发者的喜爱。开源之初,smart-doc只支持生成restfulapi文档,但在开发过程中,不断有开发者询问smart-doc是否支持生成dubborpc接口文档。经过不断的努力,我们在smart-doc的1.8.7版本中增加了对dubborpc接口的支持。让我们来看看真正的操作。1、集成smart-docsmart-doc开发的maven插件和gradle本着简单使用的原则,通过插件的方式降低smart-doc的集成难度,去除依赖入侵。您可以根据自己使用的依赖构建管理工具选择相关的插件。下面以使用smart-doc-maven-plugin插件集成smart-doc生成dubbo为例。当然,集成smart-doc生成dubborpc接口文档的方式有两种可选:使用smart-doc扫描dubboapi模块和使用smart-doc扫描dubboprovider模块,下面看一下集成方式。1.1添加插件在你的dubboapi或者dubboprovider模块中添加smart-doc-maven-plugin。当然你只需要选择一种方式即可com.github.shalousunsmart-doc-maven-plugin[最新版本]./src/main/resources/smart-doc.jsonTestcom.alibaba:fastjsoncom.alibaba:fastjsoncompilehtml在你的dubboapi或dubboprovider模块资源中添加smart-doc所需的配置文件添加smart-doc.json配置文件in{"isStrict":false,//是否开启严格模式"allInOne":true,//是否将文档合并为一个文件,一般建议为true"outPath":"D://md2",//指定文档的输出路径"projectName":"smart-doc",//配置自己的项目名称"rpcApiDependencies":[{//项目开启的dubboapi接口模块依赖,配置后,输出到文件方便用户集成"artifactId":"SpringBoot2-Dubbo-Api","groupId":"com.demo","version":"1.0.0"}],"rpcConsumerConfig":"src/main/resources/consumer-example.conf"//在文档中添加dubboconsumer集成配置,方便集成商快速集成}关于smart-doc,如果需要更详细的配置生成文档,请随时参考到项目官方wiki文档官方wiki文档rpcConsumerConfig:如果你摔倒了为了让dubboconsumer集成更快,可以添加集成配置示例consumer-example.conf,smart-doc会将示例直接输出到文档dubbo:registry:protocol:zookeeperaddress:${zookeeper.adrress}id:my-registryscan:base-packages:com.iflytek.demo.dubboapplication:name:dubbo-consumerdubbointerfacescan上面提到smart-doc支持单独扫描dubboapi或者dubboprovider。扫描原理主要是通过识别@dubbo注解标签(idea可以支持添加自定义注解标签提示,请参考smart-docwiki文档介绍)或者dubbo的@service注解。扫描dubboapidubboapi通常是一个非常简洁的dubbo接口定义。如果需要让smart-doc扫描dubbo接口,需要添加@dubbo注释标签。示例如下:/用户操作@authoryu2019/4/22。@作者张三2019/4/22。@version1.0.0@dubbo/publicinterfaceUserService{/查询所有用户@return/ListlistOfUser();/查询@paramuserId@return/UsergetById(StringuserId);}扫描dubboprovider如果想通过dubboprovider生成rpc接口文档,不需要添加其他注释标签,smart-doc自动扫描@service注解完成。/@authoryu2019/4/22./@ServicepublicclassUserServiceImplimplementsUserService{privatestaticMapuserMap=newHashMap<>();static{userMap.put("1",newUser().setUid(UUIDUtil.getUuid32()).setName("zhangsan").setAddress("四川成都"));}/获取用户@paramuserId@return/@OverridepublicUsergetById(StringuserId){returnuserMap.get(userId);}/*获取用户@return/@OverridepublicListlistOfUser(){returnuserMap.values().stream().collect(Collectors.toList());}}直接通过maven命令生成操作运行插件的文档生成命令或者直接在idea中点击插件的可视化命令。牛皮!可以为Dubbo接口生成文档。dubbo-api文档生成效果图添加依赖dubbo:registry:protocol:zookeeperaddress:${zookeeper.adrress}id:my-registryscan:base-packages:com.iflytek.demo.dubboapplication:name:dubbo-consumer用户操作URI:dubbo://localhost:20880/com.iflytek.demo.dubbo.api.interfaces.UserServiceService:com.iflytek.demo.dubbo.api.interfaces.UserServiceProtocol:dubboAuthor:yu2019/4/22.,zhangsan2019/4/22.版本:1.0.0查询所有用户定义:ListlistOfUser()描述:查询所有用户响应字段:牛皮!可以为Dubbo接口生成文档。根据用户id查询定义:UsergetById(StringuserId)描述:根据用户id查询调用参数:牛皮!可以为Dubbo接口生成文档。响应字段:牛皮!可以为Dubbo接口生成文档。使用总结Smart-doc比较晚才支持dubborpc文档生成。当然,没有比市场上其他更好的工具和模板参考了。这部分dubborpc文档还需要更多用户提交问题和改进建议。当然,如果你同意并喜欢smart-doc,请到项目中给我们一些支持和一点star。如果这篇文章对你有帮助,别忘了连打3个,点赞、转发、评论,我们下期再见!了解更多JAVA知识和技能,关注和私信博主(666)