Spring MVC 整合Swagger的一些问题总结
在做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时,遇到的两个问题,这里做一个记录。