您的位置:首页 > 编程语言 > Java开发

springboot 2 整合swagger2 以及遇到的一些坑

2019-05-10 23:19 661 查看

Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。springboot能够快速开发、便捷部署等特性,相信有很大一部分Spring Boot的用户会用来构建RESTful API。

spring boot开始整合swagger2:

1.导入依赖:

<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.8.0</version>
</dependency>

2.编写spring boot swagger2配置

@Configuration
@EnableSwagger2
public class Swagger2Config {

@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2).useDefaultResponseMessages(false)
.globalOperationParameters(parameters()).apiInfo(apiInfo()).select()
// 自行修改为自己的包路径
.apis(RequestHandlerSelectors.basePackage("com.childdream")).paths(PathSelectors.any()).build();
}

private ApiInfo apiInfo() {
return new ApiInfoBuilder().title("童心梦后台接口文档").description("童心梦后台接口文档")
// 服务条款网址
.termsOfServiceUrl("https://blog.csdn.net/ysk_xh_521").version("1.0")
.contact(new Contact("王志珺", "https://blog.csdn.net/weixin_43839457", "1025210489@qq.com")).build();
}

private List<Parameter> parameters() {
List<Parameter> para = new ArrayList<>();
return para;
}

}

3.WebMvcConfig加载配置类重写原有 addResourceHandlers 方法,添加需过滤地址

@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations("classpath:/resources/")
.addResourceLocations("classpath:/static/").addResourceLocations("classpath:/public/");
registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
super.addResourceHandlers(registry);
}

@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("login");
registry.addViewController("/index.html").setViewName("index");
registry.addViewController("/login.html").setViewName("login");
}

}

4.配置全部完成,启动项目访问http://192.168.0.103:3333/swagger-ui.html;

好神奇呀,怎么会这个样子?是哪边出问题了吗?于是想到前几天出现的一个问题,随着spring boot的升级WebMvcConfig 继承 WebMvcConfigurationSupport,要是换成之前继承WebMvcConfigurerAdapter还会出现这个问题吗?看看效果怎样:

显示正常。但这个不是咱解决问题的主要方向,于是我将修改重点放到了WebMvcConfig。各种百度寻找解决之道,也尝试好多方式均宣告失败。后来查到一条信息说到可能是swagger版本太高,于是我尝试将版本降低到如下:

<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.5.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.5.0</version>
</dependency>

确实可以成功。难道是swagger的bug,我现在还没找到具体啥原因,我只是将自己解决的问题记录下来,希望可以和大家互相学习。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: