在做Spring MVC 整合swagger的時候,遇到的兩個問題:
第一個問題
在網上找了一些Spring MVC 和Swagger的例子,照着一步步的配置,結果,到最后,項目都起來了,沒有任何問題,
但是就是沒有出現網上的效果,沒有出現Controller里寫的那些API說明,
效果是這樣的:
原因:
在Spring的配置文件中,對包管理的配置是這樣寫的:
1 <context:component-scan base-package="com.koonet.qxtn" use-default-filters="true"> 2 <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> 3</context:component-scan>
也就是說,這里聲明了Spring來管理指定包里的注解,
但是呢,Spring不認Swagger的注解,所以,才導致出現上面的情況。
解決:
將指定Spring管理注解的去掉,直接寫成這樣:
1 <context:component-scan base-package="com.koonet.qxtn"/>
這樣的話,swagger的注解也能被引入的swagger相關類識別,最終完成一系類操作,展現出我們想要的。(這里只是我的推測)
第二個問題
項目配置沒有問題,啟動不報錯,但是頁面顯示的是
Can't read swagger JSON from http://localhost:8080/swagger/api-docs
字面意思好理解,就是無法讀取swagger的json數據,
那么為什么會這樣呢?
修改swagger的index.html里的
url = "http://petstore.swagger.io/v2/swagger.json";
是修改成
url = "http://{ip}:{port}/{projectName}/api-docs";
但是呢,使用IDEA部署的項目是沒有項目名的,也就是說,在本地部署的話,直接寫成
url = "http://localhost:8080/api-docs";
就沒有問題了。
這是我在學習使用swagger時,遇到的兩個問題,這里做一個記錄。