目录
背景
在开发微服务的时候,一个项目的文件中会有多个接口模块,每个模块中有多个接口,若在每个模块中配置swagger的话,每创建一个新模块就要重新配置一次swagger,这样就会造成工作的重复。
参考RuoYi源码中swagger内容总结的学习笔记,RuoYi官网入口
目标
将swagger独立出来做成公共的组件,只要在每个接口的启动类中加入自定义的swagger启用注解即可使用。
项目目录结构
如下图:
项目中pom.xml的依赖关系
commom-swagger
pom.xml
<dependencies>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>${springfox.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
<version>${spring-boot-autoconfigure.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
<version>${spring-boot-starter-validation.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${spring-boot-starter-web.version}</version>
</dependency>
</dependencies>
抽离swagger公共部分
自定义swagger配置
在 zhang-commom-swagger子模块中,创建自定义包名,此处我创建的为zhang.commom.swagger3,并在此包下创建两个文件夹,分别为annotation 和 config。用于存放自定义注解和swagger的配置。
在 config中创建配置
创建swagger的配置
创建文件名为SwaggerProperties.java 的类文件,此文件中的属性就是配置在yml文件中的配置。内容如下:
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@Component
@ConfigurationProperties("swagger")
public class SwaggerProperties
{
/**
* 是否开启swagger
*/
private Boolean enabled;
/**
* 组名
*/
private String groupName;
/**
* swagger会解析的包路径
**/
private String basePackage = "";
/**
* swagger会解析的url规则
**/
private List<String> basePath = new ArrayList<>();
/**
* 在basePath基础上需要排除的url规则
**/
private List<String> excludePath = new ArrayList<>();
/**
* 标题
**/
private String title = "";
/**
* 描述
**/
private String description = "";
/**
* 版本
**/
private String version = "";
/**
* 许可证
**/
private String license = "";
/**
* 许可证URL
**/
private String licenseUrl = "";
/**
* 服务条款URL
**/
private String termsOfServiceUrl = "";
/**
* host信息
**/
private String host = "";
/**
* 联系人信息
*/
private Contact contact = new Contact(