SpringBoot配置knife4j版的Swagger打開doc.html頁面404


項目原因:

  最近搭建一個新的SpringBoot項目,需要配置Swagger,從其他項目里拷過來knife4j版的Swagger配置文件,結果打開doc.html顯示404,如下圖:

  查看日志,錯誤如下:

2020-09-24 17:26:26.518  WARN 15524 --- [nio-8003-exec-1] o.s.web.servlet.PageNotFound             : No mapping for GET /doc.html

  在官網和其他地方一頓搜,始終沒解決。官網推薦的方法是:https://doc.xiaominfo.com/guide/springboot-404.html

  因為doc.html是在jar包里的,需要使用資源處理器注冊靜態資源。

@SpringBootApplication
public class SwaggerBootstrapUiDemoApplication  implements WebMvcConfigurer{

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
}

  官方的補充說明是:如果你是使用的老的版本SpringBoot,通過繼承WebMvcConfigurationSupport來擴展SpringBoot相關的配置,則把以上配置加在相應的addResourceHandlers方法中即可

  在我的WebMvcConfigurer配置類里,加上上面這段代碼不好用。

  我在翻閱其他文章里,發現一句有用的話,就是

遇到這種情況請先查找,最近有沒有添加的類繼承了WebMvcConfigurationSupport,則在配置文件在中配置的相關內容會失效,需要重新指定靜態資源。

  結果我在本地代碼一搜,果然有一個類繼承了WebMvcConfigurationSupport,我把這個類改成實現WebMvcConfigurer接口,再加上官方推薦的這段代碼,訪問doc.html恢復正常。

  看來問題還是新舊版本SpringBoot配置文件 WebMvcConfigurationSupport類 和 WebMvcConfigurer接口之間有沖突,項目中還是只用一個就好了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM