gpt4 book ai didi

spring-mvc - 用 RequestMappingHandlerAdapter 问题替换 AnnotationMethodHandlerAdapter

转载 作者:行者123 更新时间:2023-12-03 14:04:48 28 4
gpt4 key购买 nike

我最近升级到 spring 3.2 并注意到 AnnotationMethodHandlerAdapter已被弃用,取而代之的是 RequestMappingHandlerAdapter .所以我重新配置为使用新类,完成自定义 MessageConverter我需要。一切都很好。

但是,当尝试访问带注释的 Controller 支持的 URL 时,我收到一个错误:

 [java] javax.servlet.ServletException: No adapter for handler [my.company.TagController@1c2e7808]: The DispatcherServlet configuration needs to include a HandlerAdapter that supports this handler
[java] at org.springframework.web.servlet.DispatcherServlet.getHandlerAdapter(DispatcherServlet.java:1128)
[java] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:903)
[java] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)

调试调度程序时,尤其是 Dispatcher.getHandlerAdapter()方法,它正在寻找我的 HandlerAdapter ,但 AbstractHandlerMethodAdapter.supports()被调用的需要一个 MethodHandler :
public final boolean supports(Object handler) {
return handler instanceof HandlerMethod && supportsInternal((HandlerMethod) handler);
}

并且 Controller 不是 HandlerMethod . AnnotatedMethodHandlerAdapter的支持方法是......好吧,不同(并且仍然有效!)
public boolean supports(Object handler) {
return getMethodResolver(handler).hasHandlerMethods();
}

所以我显然不能简单地升级到新类......我缺少一些额外的配置,但文档并没有真正帮助我。有任何想法吗?

谢谢。

最佳答案

在 spring 配置文件中使用“<mvc:annotation-driven/>”,而不是编写自己的 WebMvcConfigurationSupport 实现

例子

    <mvc:annotation-driven/>
<context:component-scan base-package="com.springapp.mvc"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
<bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter"/>
<bean class="org.springframework.http.converter.FormHttpMessageConverter"/>
<bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
</list>
</property>

</bean>

关于spring-mvc - 用 RequestMappingHandlerAdapter 问题替换 AnnotationMethodHandlerAdapter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17437697/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com