? ? ? ? 在springboot中,由于微服务的使用,往往需要创建多个模块,以降低代码的耦合性。在后端中又需要经常对接口进行测试,由于代码量的增大,在手动写测试类的话,不仅工作量非常的大,并且都是固定代码,并没有任何实际的意义。这样,我们可以使用swagger,进行后端接口的测试。swagger的使用非常方便,只需要引入相应的Maven依赖和在启动类中添加相应的注释,就能很大程度的减轻我们的工作量。这样就产生一个问题,由于微服务中,往往有多个模块,每个模块中又有相应的后端代码,如果每个模块都单独的对swagger进行配置的话,这又是一个不小的工作量。我们可以单独的设置一个配置模块,用来单独配置大部分模块都可能用到的配置,这样问题就解决了。swagger在配置模块中的配置和在非配置模块的使用如下。
一:在父模块中导入swagger相关依赖,可以避免在子模块中重复导入
<dependencies>
<!--swagger-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
</dependencies>
二:在配置模块中,添加swagger配置类
@Configuration
@EnableSwagger2
public class swaggerConfig {
@Bean
public Docket webApiConfig() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("webApi")
.apiInfo(webApiInfo())
.select()
.build();
}
private ApiInfo webApiInfo() {
return new ApiInfoBuilder()
.title("自定义网站名称")
.description("自定义描述信息")
.version("1.0")
.contact(new Contact("作者名", "完成项目链接导向", "作者邮箱"))
.build();
}
}
配置类所在的模块结构
三:在需要使用swagger测试的模块中,引入?配置模块base_config的maven坐标,示例引入到test01模块中
<dependencies>
<!--在test1模块中,引入base_config模块的maven的依赖-->
<dependency>
<!--自定义的包名,如果没有自定义,则默认为 org.example-->
<groupId>org.example</groupId>
<artifactId>base_config</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
四:在test01模块的启动类上,在上如下注解
?因为swagger默认只会扫描配置类所在模块中的同级包中的controller,所以需要我们自定义swagger包的扫描路径,这点需要特别注意
这样swagger就可以在多模块中使用,而不用重复配置了,浏览器输入
http://localhost:8080/swagger-ui.html#/
启动swagger-ui测试页面如下
另外,第四步中,还可直接在配置类中,添加注解
//添加该注解后,就不需要添加第四步中的自定义swagger的包扫描路径了
@EnableSwagger2
但是不推荐这样使用。
感谢您的阅读!
|