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.小編得解決思路

  1. 小編嘗試在配置文件springmvc.xml裏面首先加載配置文件,查了好像信息都不成功。
  2. 小編考慮,先讓加載配置文件在加載swagger。然後就看了一下ComponentScan屬性,有一個lazyInit = false屬性,其實就是是否開啓懶加載,默認是false,小編,將其設置爲true。該問題成功被解決。

重點:

  1. springmvc集成swagger2:
    3.1 要使用@ComponentScan得方式來掃包。
    3.2ComponentScan要開啓懶加載方式,屬性:lazyInit = true要開啓。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章