1. 程式人生 > >Springfox2.6.1+SpringMVC+Swagger2配置手記

Springfox2.6.1+SpringMVC+Swagger2配置手記

最近一直在搗鼓Swagger的事情,起初使用Swagger1可以配個 swagger-springmvc成功,但是它配合SpringMVC專案如果是一個上傳檔案就不太友好了,無法展示上傳檔案的按鈕,所以有上傳檔案,圖片的api就無法使用了!!!!

百度了好一陣子,在萬能的stackoverflow上終於得到答案,國內的搜尋網站貼吧這點兒真的有些遜色了,沒有關於這方面的解決方案,還是靠我微薄的英語知識搜尋到的,原來 swagger-springmvc1.0.2(最新的)已經過時了,已經被springfox取代了 !!!!!!!!

好吧,伐開心!好不容易熬了幾個通宵配置起來的swagger就這樣夭折了。

那就繼續研究springfox的swagger配置;

現在時刻的當前版本是springfox2.6.1;果斷maven下來

    <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>${springfox.version}</version>
        </dependency
>
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>${springfox.version}</version> </dependency>

在然後寫配置:

@Configuration // 配置註解
@EnableWebMvc // 啟用Mvc //非springboot框架需要引入註解@EnableWebMvc
@EnableSwagger2 // 啟用Swagger2,畢竟SpringFox的核心依舊是Swagger // @ComponentScan(basePackages = "com.june.controller.back.common.*")//然而並沒有卵用 public class SwaggerConfig extends WebMvcConfigurerAdapter { @Bean public Docket customDocket() { return new Docket(DocumentationType.SWAGGER_2).select()// 選擇哪些路徑和API會生成document .apis(RequestHandlerSelectors.any())// 對所有api進行監控 .paths(PathSelectors.any())// 對所有路徑進行監控 .build().apiInfo(apiInfo()); }// */ private ApiInfo apiInfo() { return new ApiInfo(PROJ, DESC, VERS, SERV, new Contact(NAME, URL, CONT), LICS, L_URL); } }

小弟的所有配置都是參考了這位CSDN的仁兄的部落格
好吧開開心心的(其實並不開心,工作好好的,就今天公司說辭就辭,把一位一起工作的同事給辭掉了,很震驚也很憤怒,更為自己考慮考慮),
然後執行,心想這個應該不會有問題了,因為以前的swagger1已經配置的very very good了,至少執行是沒有任何問題的,結果呵呵噠!

352198 [localhost-startStop-1] DEBUG o.s.b.f.s.DisposableBeanAdapter - Invoking destroy method 'close' on bean with name 'dataSource'
352207 [localhost-startStop-1] ERROR o.s.web.context.ContextLoader - Context initialization failed
org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is com.google.common.util.concurrent.ExecutionError: java.lang.StackOverflowError
    at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:176)
    at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:51)
    at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:346)
    at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:149)
    at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:112)
    at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:852)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:541)
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:444)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:326)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4853)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5314)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: com.google.common.util.concurrent.ExecutionError: java.lang.StackOverflowError
    at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2201)
    at com.google.common.cache.LocalCache.get(LocalCache.java:3937)
    at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:3941)
    at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4824)
    at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4830)
    at springfox.documentation.spring.web.scanners.CachingOperationReader.read(CachingOperationReader.java:57)
    at springfox.documentation.spring.web.scanners.ApiDescriptionReader.read(ApiDescriptionReader.java:66)
    at springfox.documentation.spring.web.scanners.ApiListingScanner.scan(ApiListingScanner.java:89)
    at springfox.documentation.spring.web.scanners.ApiDocumentationScanner.scan(ApiDocumentationScanner.java:70)
    at springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper.scanDocumentation(DocumentationPluginsBootstrapper.java:85)
    at springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper.start(DocumentationPluginsBootstrapper.java:127)
    at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:173)
    ... 18 common frames omitted
Caused by: java.lang.StackOverflowError: null
    at com.fasterxml.classmate.TypeBindings.equals(TypeBindings.java:221)
    at com.fasterxml.classmate.ResolvedType.equals(ResolvedType.java:278)
    at com.fasterxml.classmate.types.ResolvedRecursiveType.equals(ResolvedRecursiveType.java:157)
    at com.fasterxml.classmate.TypeBindings.equals(TypeBindings.java:221)
    at com.fasterxml.classmate.ResolvedType.equals(ResolvedType.java:278)
    at com.fasterxml.classmate.types.ResolvedRecursiveType.equals(ResolvedRecursiveType.java:157)
    at com.fasterxml.classmate.TypeBindings.equals(TypeBindings.java:221)
    at com.fasterxml.classmate.ResolvedType.equals(ResolvedType.java:278)

這個問題廢了兩天也沒解決掉,是因為國內研究springfox太少的緣故麼,至少網上搜索的時候發現大部分有關springfox的介紹都是2016年底的文章,看來又到我發揮英語的時候啦,注意下面的關鍵詞,在百度輸入:“swagger2.6.0 can not work well with springmvc ”,藍後搜尋,還是萬能的stackoverflow給力了,
解決問題,在這個貼最後發現一位仁兄這樣總結的:

a work around is to rollback to springfox-swagger2 2.5.0 .

呵呵,現在正在研究 spring2.5.0了……有成果了在了分享!

相關推薦

Springfox2.6.1+SpringMVC+Swagger2配置手記

最近一直在搗鼓Swagger的事情,起初使用Swagger1可以配個 swagger-springmvc成功,但是它配合SpringMVC專案如果是一個上傳檔案就不太友好了,無法展示上傳檔案的按鈕,所以有上傳檔案,圖片的api就無法使用了!!!! 百度了

elasticsearch-6.1.2安裝配置維護

參考手冊:https://cloud.tencent.com/developer/article/1011050 es版本: 1. 3臺6.1.2的版本的作ES叢集用於日誌和報表,安裝外掛如下: a. elasticsearch-analysis-ik 6.1.2 b. E

XXL-CONF v1.6.1,分散式配置管理平臺

   Release Notes 1、在未設定accessToken情況下,非法請求惡意構造配置Key可遍歷讀取檔案漏洞修復;(From:360程式碼衛士團隊) 2、專案名正則校驗問題修復,專案名中劃線分隔,配置點分隔; 3、底層HTTP工具類優化; 4、RESTFU

容器編排之Kubernetes1.6.1安裝與配置_Kubernetes中文社群

在經歷了幾年混亂的職業生涯之後,初步把未來延伸領域定位在容器雲方向。區塊鏈系列我還會繼續寫下去,且可能只會關注Hyperledger。 雲端計算是最近幾年來火熱的技術領域,不同於其他,他沒有固定的行業領域限制,他只是基礎設施。任何基建於計算機上的服務,在達到一定規模後,都可應用雲端計算解決方案

Spark 1.6.1 單機安裝配置

本文將介紹Apache Spark 1.6.1在單機的部署,與在叢集中部署的步驟基本一致,只是少了一些master和slave檔案的配置。http://blog.csdn.net/u011513853/article/details/52865076     Spark在Wi

python3.6+GDAL-2.1.3環境配置

eight log libs mage lib com python uci 下載地址 1、下載地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/#gdal 2、配置:見上圖命令(跟以前相似) 3、測試: python3.

web緩存服務器varnish-4.1.6的部署及配置詳解

是否 次數 tool 至少 hits 檢查 rep nat list web緩存服務器varnish-4.1.6的部署及配置詳解 1.安裝varnish4.1.6安裝依賴 yum install -y autoconf automake jemalloc-devel li

SpringMVC+Maven+tomcat配置----1.maven的配置

ins lease release data word ext nec com http <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLS

一周第二次課(1月23日) 1.6/1.7 配置IP 1.8 網絡問題排查

51cto ext 獲取ip 靜態ip p地址 cbe ffffff com 有變 由於我們用的網絡連接是NAT模式,所以我們要先執行dhclient命令,這個命令是自動獲取IP的命令。*NAT模式的概念:不受限與當前的網絡環境,只要我們的宿主機能上網,那麽我們的虛擬機也就

python3.6.1環境配置出現Requirement already up-to-date: pip in c:python36libsite-packages決解方案

下載 date 保持 keyword require edits 文件夾 分號 file 本文轉載於:http://qoogle.cn/?id=39 前提: windows下同時安裝python2和python3, 應將python2和python3直接安裝在 C盤下面

2018-03-20-1.6/1.7 配置IP 1.8 網絡問題排查

2018-03-19-1.6-.-1.81.編輯---虛擬網絡編輯器,然後如圖選擇-NAT模式,2.再點NAT設置--進入NAT設置,記錄下網關3.開啟虛擬機,回到命令行,運行dhclient命令,如果出現如圖提示,可以采用dhclient -r 殺掉進程,再次運行dhclient 4.然後 ip addr

Windows下配置並使用gmp-6.1.2

Windows下安裝並使用gmp-6.1.2 準備階段 Dev-C++ gmp-6.1.2 MSYS 第一步 安裝Dev-C++ Dev-C++下載地址https://sourceforge.net/projects/orwelldevcpp/

SpringMVC註解配置Swagger2步驟及相關知識點

Swagger2的功能不多說了,百度一下隨處可見,配置步驟也十分簡單,但一些點百度到的很多都不太詳細,個人進行了一些補充 1、pom.xml新增swagger2依賴(個人一般直接到http://search.maven.org/搜尋artifactid點最新版本copy到pom裡)

易學筆記-系統分析師考試-第6章 系統配置與效能評價/6.1 計算機層次結構/6.1.3 計算機系統結構的分類

儲存程式結構 馮諾依曼結構:1946年6月提出的 特點 計算機的組成是由: 控制器 運算器 儲存器 輸入裝置 輸出裝置

易學筆記-系統分析師考試-第6章 系統配置與效能評價/6.1 計算機層次結構/6.1.2 計算機軟體分類

軟體:泛指各類程式和檔案 系統軟體 概念:用於實現計算機系統的管理、排程、監視和服務 分類 作業系統:是使用者和計算機之間的介面,是系統軟體的核心 語言處理程式 概念:將使用者編寫的源程式轉換成機器能識別的語言 組成 編譯程式:將高階語言編寫的程式轉換為目

易學筆記-系統分析師考試-第6章 系統配置與效能評價/6.1 計算機層次結構/6.1.1 計算機硬體的組成

計算機效能評價 評價目的 選擇:從眾多的系統方案中選擇一套最適合需要的方案,重點考慮價格、價效比等因素 改進:對已有系統的效能缺陷和瓶頸進行改進優化 設計:對未來的系統進行效能預測,在效能成本方面實現最佳設計或配置 影響效能的

易學筆記-系統分析師考試-第6章 系統配置與效能評價/6.6 多處理機系統/6.6.1 多處理機系統概述

多處理機系統 概述:指的是兩個或者兩個以上的處理機,在作業系統的統一控制下,共享I/O子系統、共享主存、共享網路,協調求解一個複雜問題,從而提高系統的可靠性、適應性和可用性 多處理機和並行處理機的比較 並行處理機:屬於SIMD,一個控制器,多個處理單元,處理單元做相同

04-postgresql-9.6.1安全管理之pg_hba.conf配置(2017-06-12)

1測試需求 2步驟 1檢查192168181141上的postgresql資料庫的postgres使用者l密碼 2修改密碼為postgres 3配置1921681811

Redhat 6.1 配置Linux multipath安裝oracle 11g rac

一、安裝配置儲存節點(略) 二、資料庫節點連線儲存節點 2.1、資料庫節點安裝ISCSI啟動器 yum install iscsi* 2.2、配置啟動器 vim /etc/iscsi/initiatorname.iscsi 2.3、發起連線 # iscsiadm

Spring學習61)Spring配置概述以及Bean基本配置

Spring學習6(1)  學習5中主要學習的是Ioc的容器的整體概念,這裡(即是書中第5章)主要開始對Bean的配置進行學習。 Spring配置概述 Spring容器高層檢視  要使應用程式中的Spring容器成功啟動,需要同時具備以下三方面條件: Spri