Spring mvc 集成Swagger2
)
小編一直寫的是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要開啓。