首页 > 其他分享 >smart-doc加Torna实现文档管理

smart-doc加Torna实现文档管理

时间:2023-05-28 19:25:07浏览次数:49  
标签:CommonResult String doc Torna torna import smart

介绍

smart-doc + Torna 组成行业领先的文档生成和管理解决方案,使用smart-doc无侵入完成Java源代码和注释提取生成API文档,自动将文档推送到Torna企业级接口文档管理平台。

使用

配置数据库

mysql.sql

安装Torna

docker pull tanghc2020/torna:1.20.0
wget https://gitee.com/durcframework/torna/raw/master/install/application.properties

下载配置文件并修改数据库配置

# Server port
server.port=7700

# MySQL host
mysql.host=ip:port
# Schema name
mysql.schema=torna
# Make sure the account can run CREATE/ALTER SQL
mysql.username=xxx
mysql.password=xxx

创建容器

docker run -d --name torna -p 7700:7700 -e JAVA_OPTS="-server -Xms128m -Xmx128m" -v /root/test_torna/application.properties:/torna/config/application.properties tanghc2020/torna:1.20.0

注意,要开启防火墙对端口号的限制,访问地址 http://ip:7700 初始账号 admin/123456

项目中使用smart-doc

在项目中创建 src/main/resources/smart-doc.json

{
  "isStrict": false, //是否开启严格模式
  "packageFilters": "",//controller包过滤,多个包用英文逗号隔开
  "projectName": "spring_xxx",//配置自己的项目名称
  "appToken": "", //torna平台appToken,@since 2.0.9
  "openUrl": "http://ip:7700/api",//torna平台地址,填写自己的私有化部署地址@since 2.0.9
  "debugEnvName":"测试环境", //torna测试环境
  "replace": true //推送torna时替换旧的文档
}

实际使用时将注释去掉,appToken从如下页面中获取

<plugin>
  <groupId>com.github.shalousun</groupId>
  <artifactId>smart-doc-maven-plugin</artifactId>
  <version>2.6.4</version>
  <configuration>
      <!--指定生成文档的使用的配置文件,配置文件放在自己的项目中-->
      <configFile>./src/main/resources/smart-doc.json</configFile>
      <!--指定项目名称-->
      <projectName>spring-messagequeue</projectName>
      <!--smart-doc实现自动分析依赖树加载第三方依赖的源码,如果一些框架依赖库加载不到导致报错,这时请使用excludes排除掉-->
      <excludes>
          <!--格式为:groupId:artifactId;参考如下-->
          <!--也可以支持正则式如:com.alibaba:.* -->
          <exclude>com.alibaba:fastjson</exclude>
      </excludes>
      <!--includes配置用于配置加载外部依赖源码,配置后插件会按照配置项加载外部源代码而不是自动加载所有,因此使用时需要注意-->
      <!--smart-doc能自动分析依赖树加载所有依赖源码,原则上会影响文档构建效率,因此你可以使用includes来让插件加载你配置的组件-->
      <includes>
          <!-- 使用了mybatis-plus的Page分页需要include所使用的源码包 -->
          <include>com.baomidou:mybatis-plus-extension</include>
          <!-- 使用了mybatis-plus的IPage分页需要include mybatis-plus-core-->
          <include>com.baomidou:mybatis-plus-core</include>
          <!-- 如果配置了includes的情况下, 使用了jpa的分页需要include所使用的源码包 -->
          <include>org.springframework.data:spring-data-commons</include>
      </includes>
  </configuration>
  <executions>
      <execution>
          <!--如果不需要在执行编译时启动smart-doc,则将phase注释掉-->
          <phase>compile</phase>
          <goals>
              <!--smart-doc提供了html、openapi、markdown等goal,可按需配置-->
              <!--<goal>markdown</goal>-->
          </goals>
      </execution>
  </executions>
</plugin>

推送到Torna平台

image

代码中添加注释

import com.imooc.messagequeue.entity.CommonResult;
import com.imooc.messagequeue.entity.Product;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.validation.Valid;
import java.util.ArrayList;
import java.util.List;

/**
 * 商品模块
 *
 * @author szz 2023/3/1
 */
@RestController
@RequestMapping("/product")
public class TestSmartDocController {

    /**
     * 创建商品
     *
     * @param product 商品创建请求
     * @return
     */
    @PostMapping("/createProduct")
    public CommonResult<Boolean> createProduct(@RequestBody @Valid Product product) {
        return CommonResult.success(true);
    }

    /**
     * 根据商品名称查询商品
     *
     * @param productName 商品名称
     * @return
     */
    @GetMapping("/searchProduct")
    public CommonResult<List<Product>> searchProduct(@RequestParam String productName) {
        return CommonResult.success(new ArrayList<>());
    }

    /**
     * 创建商品
     *
     * @param product 商品创建请求
     * @return
     * @ignore
     */
    @PostMapping("/createProduct2")
    public Product createProduct2(@RequestBody @Valid Product product) {
        return product;
    }
}
/**
 * 统一响应结果
 */
public class CommonResult<T> {

    /**
     * 错误码 0表示成功
     */
    private String errCode;
    /**
     * 错误信息
     */
    private String errMsg;
    /**
     * 实际返回数据
     */
    private T data;

    private CommonResult(String errCode, String errMsg, T data) {
        this.errCode = errCode;
        this.errMsg = errMsg;
        this.data = data;
    }

    public static <T> CommonResult<T> success(T data) {
        return new CommonResult<>("0", null, data);
    }

    public static <T> CommonResult<T> fail(String errCode, String errMsg) {
        return new CommonResult<>(errCode, errMsg, null);
    }
}
import lombok.Data;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.math.BigDecimal;
import java.util.List;

/**
 * 商品实体类
 */
@Data
public class Product {

    /**
     * 商品名称
     */
    @NotBlank(message = "商品不能不能为空")
    private String productName;
    /**
     * 商品描述
     * @mock 测试描述
     */
    private String productDesc;
    /**
     * 商品价格
     */
    private BigDecimal price;

    /**
     * 商品SKU列表
     */
    @NotEmpty(message = "商品不能不能为空")
    @Valid
    private List<Sku> skus;

    /**
     * 商品SKU详情
     */
    @Data
    public static class Sku {

        /**
         * sku描述
         */
        private String skuDesc;
        /**
         * sku价格
         */
        private String price;
    }
}

主要tag

  • @param 方法参数
  • @mock smart-doc自定义tag,表示字段示例值
  • @ignore smart-doc自定义tag,在类或方法注释中使用,表示忽略此类或方法,对于属性,建议使用Json转换框架的注解(如@JsonIgnore)去忽略
  • @auther 作者信息

支持 JSR-303 参数验证规范,如@NotBlank,@NotEmpty

页面效果

image

image

多模块构建

  • parent
    • common(存放model类,被其它模块依赖使用)
    • spring-boot-web(一个web测试模块,依赖common)

直接在web模块中添加插件配置及smart-doc.json配置,依赖的模块需要先install

参考

Torna官网
Torna开发文档
Torna源码仓库-gitee
smart-doc源码仓库
smart-doc官网文档

标签:CommonResult,String,doc,Torna,torna,import,smart
From: https://www.cnblogs.com/strongmore/p/17168165.html

相关文章

  • Docker Desktop 错误:必须在BIOS中启用 硬件辅助虚拟化和数据执行保护
    一、检查Hyper-V是否开启控制面板—》程序----》启用或关闭Windows功能二、重装DockerDesktopDocker的安装就不在赘述了,按照官网安装即可,需要注意的是win10家庭版的需要安装WSL2–即linux的虚拟机内核,官网也有详细安装步骤三、重新配置Hyper-V(生效)经过无数次重启,安......
  • docker 搭建zabbix-server
    一、zabbix的构架信息1.1zabbix-serverzabbix的server端,负责接受zabbix-agent的监控数据,并且提供各种zabbix的监控功能1.2database用户存储zabbix-agent,或者代理层的数据,本文只使用mysql1.3zabbix-webzabbix的web端,用户监控的展示和一些监控的配置1.4zabbix-java-g......
  • docker部署nacos集群
    1.环境准备准备4台服务器,一台安装nginx和mysql另三台做集群使用IP服务操作系统192.168.3.215Nginx/MysqlCentOS7.9192.168.3.216Nacos-1CentOS7.9192.168.3.217Nacos-2CentOS7.9192.168.3.218Nacos-3CentOS7.9     mysql选用5.7......
  • docker存储
    1、概念1.1、容器本地存储与Docke存储驱动容器本地存储:每个容器都被自动分配了内部存储,即容器本地存储。采用的是联合文件系统。通过存储驱动进行管理。容器本地存储空间:分层结构构成,由一个可写容器层和若干只读的镜像层组成。联合文件系统:Docker的一种底层技术,由存储驱动(StorageD......
  • Docker笔记五之Docker系统变量
    本文首发于公众号:Hunter后端原文链接:Docker笔记五之Docker系统变量当我们运行一个容器的时候是可以向容器内部指定某些变量值的,比如上一篇MySQL笔记中的参数是通过容器运行的时候-e来指定的。往容器里指定变量,有如下几种方法:Dockerfile中定义运行容器的时候指定变量参......
  • docker安装mysql
    转载请注明出处:1.从DockerHub下载MySQL镜像:dockerpullmysql2.运行MySQL容器,并将主机的3306端口映射到容器的3306端口:dockerrun-p3306:3306--namemysql-eMYSQL_ROOT_PASSWORD=your_password-dmysql其中,--namemysql指定容器的名称为mysql,-p3306......
  • docker的CMD和ENTRYPOINT
    在Dockerfile中,`CMD`和`ENTRYPOINT`都用于定义容器启动时要执行的命令或程序,但它们有一些关键的区别。1.`CMD`的作用:-`CMD`指令用于设置容器启动时的默认命令或程序。-`CMD`可以在Dockerfile中只出现一次,如果有多个`CMD`指令,只有最后一个指令会生效。-`......
  • dockerfile里的EXPOSE
    在Dockerfile中,`EXPOSE`指令用于声明容器运行时将要监听的网络端口。`EXPOSE`并不会实际打开容器的端口,它只是向用户和开发人员提供了容器内部服务的网络接口信息。通过在Dockerfile中使用`EXPOSE`,你可以向其他人传达容器暴露的网络服务和端口,以便更好地理解容器的使用和......
  • kubeadm极速部署Kubernetes,教你如何轻松处理容器运行瓶颈(Docker丨容器化技术丨DevOps
    kubeadm极速部署Kubernetes1.25版本集群前言随着Kubernetes的普及,快速部署和管理Kubernetes集群已成为容器领域的关键技能之一。本文将介绍使用kubeadm工具部署Kubernetes集群的方法,为您提供一个简单且高效的解决方案。不再需要自行构建集群,通过使用本文的方法,您将能够在最短的时......
  • Docker 安装
     安装软件软源和基础软件#安装要求的软件包yuminstallyum-utilsdevice-mapper-persistent-datalvm2-y#添加基础yum源和Dockerrepository。yum-config-manager--add-repohttp://mirrors.163.com/.help/CentOS7-Base-163.repoyum-config-manager--add-repohttp:/......