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

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", "[email protected]")).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,我現在還沒找到具體啥原因,我只是將自己解決的問題記錄下來,希望可以和大家互相學習。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章