我正在尝试在使用Spring MVC框架创建的REST API上启用Swagger。我正在尝试使用swagger-springmvc为它自动生成json,并且遇到了问题。根本原因似乎是swagger-springmvc项目期望找到一个在Spring中注册的RequestMappingHandlerMapping实例,但该bean不存在。启动服务器时,我遇到此错误:
No matching bean of type [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping]
我在项目论坛上找到了a relevant thread。与我相关的唯一建议是将<mvc:default-servlet-handler/>
添加到我目前没有的弹簧配置中。
然而,当我添加该行时,我收到以下错误:
org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'mvc:default-servlet-handler'.
我知道这通常是由于架构位置定义存在问题,但这似乎并非如此。我在mvc
前缀中使用了其他几个标签,因此我认为这个标签失败是不对的。这是我的xml配置文件的标题。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<mvc:annotation-driven/>
<context:component-scan base-package="us.co.state.judicial.icces.webservices.rest" />
<mvc:default-servlet-handler/>
<bean name="serverUtil" class="us.co.state.judicial.icces.webservices.util.WebServerUtil" />
<bean name="swaggerConfig" class="us.co.state.judicial.icces.webservices.config.SwaggerConfig" />
...(some extra beans to define internally accessible services chopped off)
</beans>
所以我想,最终,我的问题分为两部分:
1)有谁知道为什么<mvc:default-servlet-handler/>
不适合我,或者有没有人知道为什么Swagger无法将RequestMappingHandlerMapping
的任何实例自动装入我的项目?如果有帮助,我很乐意发布有关我的配置的更多详细信息。
答案 0 :(得分:1)
您似乎使用的是旧版本的Spring框架 - 请您确认您使用的是Spring 3.2+ - 昨天的Biju Kunjummen
此评论包含答案。我的愚蠢错误,非常感谢Biju的帮助。