Skip to content

配置项

完整配置

配置版本必填类型默认值描述
outPathString指定文档的输出路径
serverUrlStringhttp://127.0.0.1服务器地址, 导出postman建议设置成http://方便直接在postman直接设置环境变量。 2.4.8后导出postman建议使用serverEnv,避免多出导出时修改配置。
serverEnv2.4.8String服务器地址, 导出postman建议设置成http://方便直接在postman直接设置环境变量。改配置是为了支持postman导出时不用全局修改serverUrl
pathPrefix2.2.3String设置path前缀, 如配置Servlet ContextPath
isStrictBoolean是否开启严格模式,严格模式会强制检查代码注释,在2.6.3即以后的插件版本设置此项时检查到注释错误也会直接中断插件白嵌套的构建周期。 作为团队使用建议使用设置为true,提升对开发人员的注释要求,提升文档的完善度。
allInOneBooleanfalse是否将文档合并到一个文件中,一般推荐为true
coverOldBooleanfalse是否覆盖旧的文件,主要用于Markdown文件覆盖。
createDebugPage2.0.1Booleanfalsesmart-doc支持创一个类似Swagger那种可调试接口的HTML文档页面,仅在AllInOne模式中起作用。 从@2.0.1开始,对html文档,无论是allInOne还是非allInOne模式都能够生成debug页面。
packageFiltersStringController包过滤,多个包用英文逗号隔开。
2.2.2开始需要采用正则:com.test.controller.*
2.7.1开始支持方法级别正则:com.test.controller.TestController.*
packageExcludeFiltersStringpackageFilters排除子包,多个包用英文逗号隔开
2.2.2开始需要采用正则:com.test.controller.res.*
md5EncryptedHtmlNameBooleanfalse只有每个Controller生成一个HTML文件是才使用。
styleString基于highlight.js代码高亮设置。
projectNameString只有每个Controller生成一个HTML文件是才使用。 如果smart-doc.json中和插件中都未设置projectName2.3.4开始,插件自动采用pom中的projectName作为默认填充, 因此使用插件时可以不配置。
skipTransientField1.7.8Booleantrue自 3.0.8 起已弃用。请使用 serializeRequestTransientsserializeResponseTransients 代替。此配置用于跳过请求和响应体中瞬态字段的序列化。
serializeRequestTransients3.0.8Booleanfalse决定是否序列化请求对象中的瞬态字段。设置为 true 时,transient修饰的字段将包含在请求序列化中。
serializeResponseTransients3.0.8Booleanfalse决定是否序列化响应对象中的瞬态字段。设置为 true 时,transient修饰的字段将包含在响应序列化中。
sortByTitle1.8.7Booleanfalse接口标题排序。
showAuthorBooleantrue是否显示接口作者名称。
requestFieldToUnderline1.8.7Booleanfalse自动将驼峰入参字段在文档中转为下划线格式。
responseFieldToUnderline1.8.7Booleanfalse自动将驼峰响应字段在文档中转为下划线格式。
inlineEnum1.8.8Booleanfalse是否将枚举详情展示到参数表中。
recursionLimit1.8.8int7设置允许递归执行的次数用于避免一些对象解析卡主。
allInOneDocFileName1.9.0Stringindex.html只有配置项目所有Controller生成一个HTML文件时才生效。
requestExample1.9.0Booleantrue是否将请求示例展示在文档中。
responseExample1.9.0Booleantrue是否将响应示例展示在文档中。
urlSuffix2.1.0String支持SpringMVC旧项目的url后缀。
languageStringCHINESEmock值的国际化支持。
displayActualType1.9.6Booleanfalse是否在注释栏自动显示泛型的真实类型短类名。
appKey2.0.9Stringtorna平台对接appKey
appToken2.0.9Stringtorna平台appToken
secret2.0.9Stringtorna平台secret
openUrl2.0.9Stringtorna平台地址,填写自己的私有化部署地址。
debugEnvNameStringtorna环境名称。
replace2.2.4Booleantrue推送torna时替换旧的文档。改动还是会推送过去覆盖的,这个功能主要是保证代码删除了,torna上没有删除。
debugEnvUrl2.0.9String推送torna配置接口服务地址。
tornaDebug2.0.9Booleantrue是否打印torna推送日志。
author2.0.9String指定推送到Torna的用户名
ignoreRequestParams1.9.2List<String>忽略请求参数对象,把不想生成文档的参数对象屏蔽掉。
dataDictionariesList<Object>配置数据字典
2.4.6开始可以配置枚举实现的接口, 当配置接口时title将使用实现枚举的类描述,如果有已经实现的枚举需要忽略的话,可以在实现枚举类上增加@ignore进行忽略。
errorCodeDictionariesList<Object>错误码列表
2.4.6开始可以配置枚举实现的接口, 当配置接口时title将使用实现枚举的类描述,如果有已经实现的枚举需要忽略的话,可以在实现枚举类上增加@ignore进行忽略。
revisionLogsList<Object>文档变更记录。
customResponseFieldsList<Object>自定义添加字段和注释,一般用户处理第三方jar包库。
customRequestFieldsList<Object>自定义请求体的注释。
requestHeaders2.1.3List<Object>设置公共请求头。
requestParams2.2.3List<Object>公共请求参数(通过拦截器处理的场景)。
rpcApiDependenciesList<Object>项目开放的Dubbo API接口模块依赖,配置后输出到文档方便使用者集成。
rpcConsumerConfigString文档中添加Dubbo Consumer集成配置,用于方便集成方可以快速集成。
apiObjectReplacements1.8.5List<Object>使用自定义类覆盖其他类做文档渲染。
apiConstants1.8.9List<Object>配置自己的常量类,smart-doc在解析到常量时自动替换为具体的值。 2.4.2版本开始使用到常量也无需配置,smart-doc已经能够自动解析。
responseBodyAdvice1.8.9List<Object>ResponseBodyAdviceSpring框架中预留的钩子,它作用在Controller方法执行完成之后,http响应体写回客户端之前, 它能方便的织入一些自己的业务逻辑处理了,因此smart-doc也提供了对ResponseBodyAdvice统一返回设置(不要随便配置根据项目的技术来配置)支持, 可用ignoreResponseBodyAdvice tag来忽略。
requestBodyAdvice2.1.4List<Object>设置RequestBodyAdvice统一请求包装类。
groups2.2.5List<Object>对不同的Controller进行分组。
requestParamsTable2.2.5String是否将请求参数表展示在文档中。
responseParamsTable2.2.5Boolean是否将响应参数表展示在文档中。
framework2.2.5Stringspring or dubboSpringApache Dubbosmart-doc默认支持解析生成文档的框架,不配置framework时根据触发的文档构建场景自动选择Spring或者 Dubbosmart-doc目前也支持JAX-RS的标准,因此使用支持JAX-RS标准的框架(如:Quarkus)可以作为体验使用,但是还不完善。
可选值: spring,dubbo,JAX-RS,solon
randomMock2.6.9BooleanfalserandomMock用于控制是否让smart-doc生成随机mock值,在2.6.9之前的版本中smart-doc会自动给参数和自动生成随机值, 每次生成的值都不一样,现在你可以设置为false来控制随机值的生成。
componentType2.7.8StringRANDOMopenapi component key generator
RANDOM : 支持 @Validated 分组校验
NORMAL: 不支持 @Validated, 用于 openapi 生成代码
increment3.0.0Booleanfalseincrement用于控制是否让smart-doc根据GIT代码的变更实现文档的增量推送
apiUploadNums3.0.2Integer上传torna时,支持文档分批上传,设置文档批次的大小。不配置则一次上传所有
showValidation3.0.3BooleantrueshowValidation用于控制smart-doc是否提取JSR字段验证信息展示到文档中
jmeter3.0.4Object生成JMeter性能测试脚本一些配置。
addDefaultHttpStatuses3.0.5Booleanfalse生成文档时是否添加框架默认的http状态码,例如Spring MVC默认的500404, 当前只有生成OenAPI文档时支持。
json
{
    "serverUrl": "http://127.0.0.1",
    "serverEnv": "http://{{server}}",
    "pathPrefix": "",
    "isStrict": false,
    "allInOne": true,
    "outPath": "D://md2",
    "randomMock": false,
    "coverOld": true,
    "createDebugPage": true,
    "packageFilters": "",
    "packageExcludeFilters": "",
    "md5EncryptedHtmlName": false,
    "style": "xt256",
    "projectName": "smart-doc",
    "framework": "spring",
    "skipTransientField": true,
    "serializeRequestTransients": false,
    "serializeResponseTransients": false,
    "sortByTitle": false,
    "showAuthor": true,
    "requestFieldToUnderline": true,
    "responseFieldToUnderline": true,
    "inlineEnum": true,
    "recursionLimit": 7,
    "allInOneDocFileName": "index.html",
    "requestExample": "true",
    "responseExample": "true",
    "requestParamsTable": true,
    "responseParamsTable": true,
    "urlSuffix": ".do",
    "displayActualType": false,
    "appToken": "c16931fa6590483fb7a4e85340fcbfef",
    "isReplace": true,
    "openUrl": "http://localhost:7700/api",
    "debugEnvName": "Test ENV",
    "debugEnvUrl": "http://127.0.0.1",
    "tornaDebug": false,
    "author": "smart-doc",
    "increment": false,
    "ignoreRequestParams": [
        "org.springframework.ui.ModelMap"
    ],
    "dataDictionaries": [
        {
            "title": "http status",
            "enumClassName": "com.power.common.enums.HttpCodeEnum",
            "codeField": "code",
            "descField": "message"
        },
        {
            "enumClassName": "com.xx.IEnum",
            "codeField": "code",
            "descField": "message"
        }
    ],
    "errorCodeDictionaries": [
        {
            "title": "title",
            "enumClassName": "com.power.common.enums.HttpCodeEnum",
            "codeField": "code",
            "descField": "message",
            "valuesResolverClass": ""
        },
        {
            "enumClassName": "com.xx.IEnum",
            "codeField": "code",
            "descField": "message"
        }
    ],
    "revisionLogs": [
        {
            "version": "1.0",
            "revisionTime": "2020-12-31 10:30",
            "status": "update",
            "author": "author",
            "remarks": "desc"
        }
    ],
    "customResponseFields": [
        {
            "name": "code",
            "desc": "response code",
            "ownerClassName": "org.springframework.data.domain.Pageable",
            "ignore": true,
            "value": "00000"
        }
    ],
    "customRequestFields": [
        {
            "name": "code",
            "desc": "status code",
            "ownerClassName": "com.xxx.constant.entity.Result",
            "value": "200",
            "required": true,
            "ignore": false
        }
    ],
    "requestHeaders": [
        {
            "name": "token",
            "type": "string",
            "desc": "desc",
            "value": "token value",
            "required": false,
            "since": "-",
            "pathPatterns": "/app/test/**",
            "excludePathPatterns": "/app/page/**"
        },
        {
            "name": "appkey",
            "type": "string",
            "desc": "desc",
            "value": "appkey value",
            "required": false,
            "pathPatterns": "/test/add,/testConstants/1.0",
            "since": "-"
        }
    ],
    "requestParams": [
        {
            "name": "configPathParam",
            "type": "string",
            "desc": "desc",
            "paramIn": "path",
            "value": "testPath",
            "required": false,
            "since": "-",
            "pathPatterns": "**",
            "excludePathPatterns": "/app/page/**"
        },
        {
            "name": "configQueryParam",
            "type": "string",
            "desc": "desc",
            "paramIn": "query",
            "value": "testQuery",
            "required": false,
            "since": "-",
            "pathPatterns": "**",
            "excludePathPatterns": "/app/page/**"
        }
    ],
    "rpcApiDependencies": [
        {
            "artifactId": "SpringBoot2-Dubbo-Api",
            "groupId": "com.demo",
            "version": "1.0.0"
        }
    ],
    "rpcConsumerConfig": "src/main/resources/consumer-example.conf",
    "apiObjectReplacements": [
        {
            "className": "org.springframework.data.domain.Pageable",
            "replacementClassName": "com.power.doc.model.PageRequestDto"
        }
    ],
    "apiConstants": [
        {
            "constantsClassName": "com.power.doc.constants.RequestParamConstant"
        }
    ],
    "responseBodyAdvice": {
        "className": "com.power.common.model.CommonResult"
    },
    "requestBodyAdvice": {
        "className": "com.power.common.model.CommonResult"
    },
    "groups": [
        {
            "name": "test group",
            "apis": "com.power.doc.controller.app.*"
        }
    ],
    "requestParamsTable": true,
    "responseParamsTable": true,
    "componentType": "RANDOM",
    "jmeter": {
        "addPrometheusListener": true
    },
    "addDefaultHttpStatuses": true
}

packageFilters

Controller包过滤,多个包用英文逗号隔开。

PS: 2.2.2开始需要采用正则:com.test.controller.* ,2.7.1开始支持方法级别正则:com.test.controller.TestController.*

json
{
    "packageFilters": "com.test.controller.*", // 输出 controller 包下所有的接口
    "packageFilters": "com.example.controller.PetController", // 只输出 PetController 的接口
    "packageFilters": "com.example.controller.*Controller", // 输出 controller 包下以 Controller 后缀为类名的所有接口
    "packageFilters": "com.example.controller.Pet.*", // 输出 controller 包下以 Pet 开头为类名的所有接口
    "packageFilters": "com.example.controller.Pet.*Controller", // 输出 controller 包下符合 Pet*Controller 类名的所有接口
    "packageFilters": "com.example.controller.PetController.getPetInfo", // 输出 PetController 中 getPetInfo 方法接口
    "packageFilters": "com.example.controller.PetController.*", // 输出 PetController 中所有的接口
    "packageFilters": "com.example.controller.PetController.get.*", // 只输出 PetController 类中以 get 为方法名开头的所有接口
    "packageFilters": "com.example.controller.PetController.*Info", // 只输出 PetController 类中以 Info 为方法名结尾的所有接口
    "packageFilters": "com.example.controller.PetController.get.*Info", // 只输出 PetController 类中符合 get.*Info 为方法名的所有接口
}

dataDictionaries

配置数据字典,2.4.6开始可以配置枚举实现的接口, 当配置接口时title将使用实现枚举的类描述,如果有已经实现的枚举需要忽略的话,可以在实现枚举类上增加@ignore进行忽略。

配置类型描述
titleString
enumClassNameString错误码枚举类
codeFieldString错误码的code码字段名称,smart-doc默认以getCode方法名去反射获取。如果没有get方法可以配置字段对应方法名,例如:code()
descFieldString错误码的描述信息对应的字段名,和codeField一样可以配置为方法名,例如:message()
json
{
    "dataDictionaries": [
        {
            "title": "title",
            "enumClassName": "com.power.common.enums.HttpCodeEnum", 
            "codeField": "code", 
            "descField": "message" 
        }
    ]
}

errorCodeDictionaries

错误码列表,2.4.6开始可以配置枚举实现的接口, 当配置接口时title将使用实现枚举的类描述,如果有已经实现的枚举需要忽略的话,可以在实现枚举类上增加@ignore进行忽略。

配置类型描述
titleString
enumClassNameString错误码枚举类
codeFieldString错误码的code码字段名称,smart-doc默认以getCode方法名去反射获取。如果没有get方法可以配置字段对应方法名,例如:code()
descFieldString错误码的描述信息对应的字段名,和codeField一样可以配置为方法名,例如:message()
json
{
    "errorCodeDictionaries": [
        {
            "title": "title",
            "enumClassName": "com.power.common.enums.HttpCodeEnum", 
            "codeField": "code", 
            "descField": "message" 
        }
    ]
}

revisionLogs

文档变更记录。

配置类型描述
versionString文档版本号
revisionTimeString文档修订时间
statusString变更操作状态,一般为:创建、更新等
authorString文档变更作者
remarksString变更描述
json
{
    "revisionLogs": [
        {
            "version": "1.0", 
            "revisionTime": "2020-12-31 10:30", 
            "status": "update", 
            "author": "author", 
            "remarks": "desc" 
        }
    ]
}

customResponseFields

自定义添加字段和注释,一般用户处理第三方jar包库。

配置类型描述
nameString覆盖响应码字段
descString覆盖响应码的字段注释
ownerClassNameString指定你要添加注释的类名
ignoreBoolean设置true会被自动忽略掉不会出现在文档中
valueString设置响应码的值
json
{
    "customResponseFields": [
        {
            "name": "code", 
            "desc": "响应代码", 
            "ownerClassName": "org.springframework.data.domain.Pageable",
            "ignore": true, 
            "value": "00000" 
        }
    ]
}

customRequestFields

自定义添加字段和注释,一般用户处理第三方jar包库。

配置类型描述
nameString属性名
descString描述
ownerClassNameString属性对应的类全路径
ignoreBoolean是否忽略
requiredBoolean是否必填
valueString默认值或者mock
json
{
    "customRequestFields": [
        {
            "name": "code", 
            "desc": "状态码", 
            "ownerClassName": "com.xxx.constant.entity.Result",
            "value": "200", 
            "required": true, 
            "ignore": false 
        }
    ]
}

rpcApiDependencies

项目开放的Dubbo API接口模块依赖,配置后输出到文档方便使用者集成。

配置类型描述
artifactIdStringartifactId
groupIdStringgroupId
versionString版本号
json
{
    "rpcApiDependencies": [
        {
            "artifactId": "SpringBoot2-Dubbo-Api",
            "groupId": "com.demo",
            "version": "1.0.0"
        }
    ]
}

apiObjectReplacements

使用自定义类覆盖其他类做文档渲染。

配置类型描述
classNameString需要被替换的全类名
replacementClassNameString用于被替换的全类名
json
{
    "apiObjectReplacements": [
        {
            "className": "org.springframework.data.domain.Pageable",
            "replacementClassName": "com.power.doc.model.PageRequestDto" //自定义的PageRequestDto替换Pageable做文档渲染
        }
    ]
}

responseBodyAdvice

ResponseBodyAdviceSpring框架中预留的钩子,它作用在Controller方法执行完成之后,http响应体写回客户端之前, 它能方便的织入一些自己的业务逻辑处理了,因此smart-doc也提供了对ResponseBodyAdvice统一返回设置(不要随便配置根据项目的技术来配置)支持, 可用ignoreResponseBodyAdvice tag来忽略。

配置类型描述
classNameString通用响应体
json
{
    "responseBodyAdvice": {
        "className": "com.power.common.model.CommonResult" 
    }
}

requestBodyAdvice

设置RequestBodyAdvice统一请求包装类。

配置类型描述
classNameString通用请求体
json
{
    "requestBodyAdvice": {
        "className": "com.power.common.model.CommonResult" 
    }
}

groups

对不同的Controller进行分组。

PS: 分组不对postman.json和openApi.json生效

配置类型描述
nameString分组名称
apisString分组url, 支持正则 ,多个值用英文逗号隔开
json
{
    "groups": [
        {
            "name": "测试分组",
            "apis": "com.example.controller.*",
            "apis": "com.example.controller.PetController", // 只包含 PetController 的接口
            "apis": "com.example.controller.*Controller", // 包含controller 包下以 Controller 后缀为类名的所有接口
            "apis": "com.example.controller.Pet.*", // 包含 controller 包下以 Pet 开头为类名的所有接口
            "apis": "com.example.controller.Pet.*Controller" // 包含 controller 包下符合 Pet*Controller 类名的所有接口
        }
    ]
}

apis如果配置后在支持分组的模版上不生效,可能是正则配置有问题。可以自行调用smart-docDocUtil工具验证。 验证例子参考如下:

@Test
public void testIsMatch() {
    String pattern = "com.aaa.*.controller";
    String controllerName = "com.aaa.cc.controlle";
    System.out.println(DocUtil.isMatch(pattern, controllerName));
}

jmeter

3.0.4版本开始增加,生成JMeter性能测试脚本时的自定义配置项

配置类型描述
addPrometheusListenerBoolean生成脚本时是否添加Prometheus监听器
json
{
  "jmeter": {
    "addPrometheusListener": true
  }
}

基于 MIT 许可发布