多模块集成swagger(knife4j-spring-boot-starter)
前言
单体项目、多模块单体项目、微服务项目,集成的方案大同小异,微服务会在网关做个聚合,后面再补充。
依赖版本
目前demo的版本如下:
- spring boot 2.7.3
- spring cloud 2021.0.4
- spring cloud alibaba 2021.0.4.0
- knife4j-spring-boot-starter 3.0.3
从零开始
多模块引入swagger:
- 新建多模块项目
- 新建ms-common-swagger(作用:swagger的相关依赖及定义)
- 新建ms-module-system(业务服务,可能还有服务a、b、c)
- 在system服务引入swagger
- 使用@Api等注解
第一步,新建多模块项目
略
第二步,新建ms-common-swagger
只需要一个jar
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.3</version>
</dependency>
第三步,新建ms-module-system
引入ms-common-swagger
<dependency>
<groupId>com.ms</groupId>
<artifactId>ms-domain-system</artifactId>
</dependency>
配置项:
spring:
mvc:
pathmatch:
matching-strategy: ant_path_matcher
不配置上述ant_path_matcher会导致问题!
Failed to start bean 'documentationPluginsBootstrapper'
具体原因没深究,有兴趣自行研究,网上相关资料描述是spring boot 2.6引入的路径匹配策略和springfox不兼容
到底需要不需要配置类或者注解或者配置?
对于配置类,默认的扫描策略没具体研究,从结果看,都会被扫。
但是接口文档关注点应该是业务类接口,一种是通过包路径、一种是通过注解,所以配置类最好是配置上。
@Configuration
public class SwaggerConfig {
@Bean
public Docket webApiConfig() {
System.out.println("swagger docker被注册");
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
// .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
.paths(PathSelectors.any())
.build();
}
}
对于注解,比如@EnableSwagger2或@EnableKnife4j,是不需要的
对于配置项,开启可不需要,关闭需要(enable是增强处理,production是关闭文档访问)
knife4j:
enable: true
production: true
原文地址:https://blog.csdn.net/qq_31854267/article/details/143857526
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!