SpringBoot整合Swagger2

645 阅读2分钟

「这是我参与11月更文挑战的第22天,活动详情查看:2021最后一次更文挑战

前言:最近在参与一个二手交易平台网站的项目,因为是多人协作,打算采用整合swagger2,编写接口文档,方便团队成员参考和测试。

Swagger 的优势

  • 支持 API 自动生成同步的在线文档:使用 Swagger 后可以直接通过代码生成文档,不再需要自己手动编写接口文档了,对程序员来说非常方便,可以节约写文档的时间去学习新技术。
  • 提供 Web 页面在线测试 API:光有文档还不够,Swagger 生成的文档还支持在线测试。参数和格式都定好了,直接在界面上输入参数对应的值即可在线测试接口。

整合swagger

第一步:

引入pom依赖:

		<!--引入swagger2依赖-->
		<dependency>
			<groupId>io.springfox</groupId>
			<artifactId>springfox-swagger2</artifactId>
			<version>2.9.2</version>
		</dependency>
		<!--引入swaggerui-->
		<dependency>
			<groupId>com.github.xiaoymin</groupId>
			<artifactId>swagger-bootstrap-ui</artifactId>
			<version>1.9.3</version>
		</dependency>

swagger-bootstrap-ui是国人开发的一个依赖jar包,用来美化原有的swagger界面

第二步:

编写配置类

@Configuration
@EnableSwagger2
public class Swagger2Config {

    @Bean
    public Docket createRestApi(){

        return  new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
            .apis(RequestHandlerSelectors.basePackage("com.example.jxauflea.controller"))// 扫描接口的包路径
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo(){
        return new ApiInfoBuilder()
                .title("接口文档")// swagger文档的标题
                .description("")// 自定义相关描述
                .contact(new Contact("xxx","http:localhost/doc.html","xxx@xxx.com"))
                .version("1.0")// 当前的版本
                .build();
    }

}

注意:这里为了自动装配我们的swagger配置,需要在配置类的上方添加@EnableSwagger2注解

第三步

访问页面,通过地址访问文档:http://localhost:8080/doc.html

最终效果

image-20211122215400776

整合过程中出现的问题

项目一启动时,报错

image-20211122215239449

刚开始,我也在各大平台上搜过此错误,大多数的回答都是,swagger的pom中带的版本过低,需要升级版本

image-20211122215510090

我把解决措施放在这,可能会有小伙伴用的上

方法:升级guava

    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>25.1-jre</version>
    </dependency>

但我试过这样并没有效果,在我几番周折下,发现是springboot版本的问题,刚开始我是2.6.0,后面将版本到2.5.4,完美解决问题。

方法:降低springboot版本

image-20211122215741145