接口文档总是烦人。尝试过使用Postman编写和分享项目文档,感觉不错。但是最近项目比较紧,没有多余的时间花在这上面,这也导致我尝试YApi(另一种文档)的计划落空了。嗯,目前没有比Swagger更快更笨的工具了,尽管它有严重的代码污染。用这个先应付一会,空闲的时候再玩玩YApi。Swagger3集成Swagger的最新版本是3.0.0。在SpringBoot应用程序中集成Swagger3比旧的Swagger2简单得多。它提供了一个Starter组件。io.springfoxspringfox-boot-starter3.0.0就这样,简单吗?至于教程说要开启注解@EnableOpenApi,完全没有必要。因为在springfox-boot-starter-3.0.0.jar下可以找到一个spring.factories,熟悉SpringBoot的同学都知道这是一个SpringBoot特有的SPI文件,可以自动发现并注册其中的配置入门组件。里面有这样一个配置:#AutoConfigureorg.springframework.boot.autoconfigure.EnableAutoConfiguration=\springfox.boot.starter.autoconfigure.OpenApiAutoConfiguration顺藤摸瓜找到通用配置类OpenApiAutoConfiguration:@Configuration@EnableConfigurationProperties(SpringfoxConfigurationProperties.class)@ConditionalOnProperty(value="springfox.documentation.enabled",havingValue="true",matchIfMissing=true)@Import({OpenApiDocumentationConfiguration.class,SpringDataRestConfiguration.class,BeanValidatorPluginsConfiguration.class,Swagger2DocumentationConfiguration.class,SwaggerUiWebFluxConfiguration.class,SwaggerUiWebConfiguration@class,SwaggerUiWebConfiguration@class,SwaggerUiWebConfiguration@class,SwaggerUiWebConfiguration@class,SwaggerUiWebConfiguration.class){WebMvcAutoConfiguration.class,JacksonAutoConfiguration.class,HttpMessageConvertersAutoConfiguration.class,RepositoryRestMvcAutoConfiguration.class})公共类OpenApiAutoConfiguration{}我们发现一个关键的地方@ConditionalOnProperty注解声明了当springfox.documentation.enabled为true时开启配置,默认值为true。这个很好用,Swagger只推荐在开发阶段使用,这个正好是一个switch。另外,有时候我们自定义配置的时候最好加上这个开关://自定义swagger3文档信息@Configuration@ConditionalOnProperty(value="springfox.documentation.enabled",havingValue="true",matchIfMissing=true)publicclassSwagger3Config{@BeanpublicDocketcreateRestApi(){returnnewDocket(DocumentationType.OAS_30).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)).paths(PathSelectors.any()).build();}privateApiInfoapiInfo(){returnnewApiInfoBuilder().title("Swagger3接口文档").description("更多信息请咨询felord.cn").contact(newContact("码农小胖哥","https://felord.cn","dax@felord.cn")).version("1.0.0").build();}}如果想给Swagger3添加JsonWebToken,可以参考这篇文章。一开始我们提到Swagger3不需要用@EnableOpenApi或@EnableSwagger2开启,这里也可以找到答案。@Import(OpenApiDocumentationConfiguration.class)public@interfaceEnableOpenApi{}@Import(Swagger2DocumentationConfiguration.class)public@interfaceEnableSwagger2{}以上两个导入类都可以在OpenApiAutoConfiguration中找到,所以Swagger3提供了全自动集成。不兼容全局统一参数如果使用统一返回体包装器规范SpringMVC接口的统一返回/***ReturnBodyUnifiedWrapper**@authorn1*/@RestControllerAdvicepublicclassRestBodyAdviceimplementsResponseBodyAdvice