Spring mvc 內建Swagger2
- Spring mvc 內建Swagger2
-
- 效果
- 問題1(swagger界面可以打開,但是接口不顯示)
- 問題2( Could not resolve placeholder 'cardUrl' in value "${cardUrl}")
- 重點:
)
小編一直寫的是SPringleboot 和vue,突然今天公司給我一個Spring mvc 的項目,但是還是沒有內建Swagge的項目,導緻我在調試及測試時候很不友善,不能及時看到接口的資訊。是以小編作為多年的資深開發,覺得這對我是一件和容易的事情,是以就幹起來了。但是在內建的時候遇到很多問題完全和springboot不一樣,是以在這裡記錄一下。
Spring mvc 內建Swagger2
@EnableWebMvc
@EnableSwagger2
@Configuration
**//下面這個在springmvc中必須要,,lazyInit = true 這個設定必須要**
@ComponentScan(basePackages = {"com.myuser.controller"}**,lazyInit = true**)
public class Swagger2Config extends WebMvcConfigurationSupport {
@Bean
public Docket createRestApi() {// 建立API基本資訊
return new Docket(DocumentationType.SWAGGER_2)
.select()
//這個設定在springmvc中不需要可以不寫,
// .apis(RequestHandlerSelectors.basePackage("com.echase.controller"))
.paths(PathSelectors.any())
.build()
.apiInfo(apiInfo());
}
private ApiInfo apiInfo() {
// 建立API的基本資訊,這些資訊會在Swagger UI中進行顯示
return new ApiInfoBuilder()
// API 标題
.title("主題")
// API描述
.description("描述")
// .contact(new Contact("随便寫", "随便寫", "随便寫"))
// 版本号
.version("1.0")
.build();
}
}
效果
問題1(swagger界面可以打開,但是接口不顯示)
原因是:
控制台有報錯:
問題2( Could not resolve placeholder ‘cardUrl’ in value “${cardUrl}”)
問題原因是找不到占位符。根本原因是,swagge2首先被注解進來後,然後開始掃controller得包,但是controller裡面引入了配置檔案,而對應得配置檔案還是沒加載進來,最後導緻了${cardUrl}占位符得出錯。
1.小編得解決思路
- 小編嘗試在配置檔案springmvc.xml裡面首先加載配置檔案,查了好像資訊都不成功。
- 小編考慮,先讓加載配置檔案在加載swagger。然後就看了一下ComponentScan屬性,有一個lazyInit = false屬性,其實就是是否開啟懶加載,預設是false,小編,将其設定為true。該問題成功被解決。
重點:
-
springmvc內建swagger2:
3.1 要使用@ComponentScan得方式來掃包。
3.2ComponentScan要開啟懶加載方式,屬性:lazyInit = true要開啟。