Java Spring4迁移-ClassCastException:无法转换为org.springframework.web.method.HandlerMethod?
从Spring3.0升级到4.0时,我遇到了这个异常 我用这个更新了不推荐使用的类Java Spring4迁移-ClassCastException:无法转换为org.springframework.web.method.HandlerMethod?,java,spring,spring-mvc,classcastexception,spring-4,Java,Spring,Spring Mvc,Classcastexception,Spring 4,从Spring3.0升级到4.0时,我遇到了这个异常 我用这个更新了不推荐使用的类 DefaultAnnotationHandlerMapping,AnnotationMethodHandlerAdapterwithRequestMappingHandlerMapping,RequestMappingHandlerAdapter java.lang.ClassCastException: AuditingController$$EnhancerByCGLIB$$992fb2c8 cannot b
DefaultAnnotationHandlerMapping,AnnotationMethodHandlerAdapter
withRequestMappingHandlerMapping,RequestMappingHandlerAdapter
java.lang.ClassCastException: AuditingController$$EnhancerByCGLIB$$992fb2c8 cannot be cast to org.springframework.web.method.HandlerMethod
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
下面是bean的定义
<bean name="handlerAdapter"
class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<array>
....
....
</array>
</property>
</bean>
调用org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter
return handleInternal(request, response, (HandlerMethod) handler);
此时,它无法将控制器强制转换为
HandlerMethod
它现在正在工作。如本文所述,我需要更新我的控制器测试用例以供使用
WebApplicationContext,MockMvc & RequestMappingHandlerAdapter
而不是
MockHttpServletRequest, MockHttpServletResponse & HandlerAdapter.
您的测试用例是错误的,处理
@RequestMethod
带注释的方法已从AnnotationMethodHandlerAdapter
更改为RequestMappingHandlerAdapter
。现在它直接指向要调用的方法(即HandlerMethod
),因此将完整的控制器放在其中不再有效,为什么还要测试Spring类?您应该测试@Controller
bean。这些handleAdapter
对象由Spring的DispatcherServlet
堆栈(和MVC配置)使用。你应该假设它们工作并测试你自己的代码。@SotiriosDelimanolis-我正在测试我的控制器本身。不测试spring类。我正在使用MockHttpServletRequest、MockHttpServletResponse、handleadapter
并测试响应数据我想说的是您不应该这样做。使用SpringMVC的全部要点是浏览DispatcherServlet
。如果您在DispatcherServlet
上运行,那么您并不是在真正测试控制器。只需从MVC配置中设置一个MockMvc
对象,并通过它测试您的请求。
MockHttpServletRequest, MockHttpServletResponse & HandlerAdapter.