天天看點

Spring mvc 內建Swagger2Spring mvc 內建Swagger2

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();
    }
}
           

效果

Spring mvc 內建Swagger2Spring mvc 內建Swagger2

問題1(swagger界面可以打開,但是接口不顯示)

Spring mvc 內建Swagger2Spring mvc 內建Swagger2

原因是:

Spring mvc 內建Swagger2Spring mvc 內建Swagger2

控制台有報錯:

Spring mvc 內建Swagger2Spring mvc 內建Swagger2

問題2( Could not resolve placeholder ‘cardUrl’ in value “${cardUrl}”)

Spring mvc 內建Swagger2Spring mvc 內建Swagger2

問題原因是找不到占位符。根本原因是,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要開啟。

繼續閱讀