Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring4迁移-ClassCastException:无法转换为org.springframework.web.method.HandlerMethod?_Java_Spring_Spring Mvc_Classcastexception_Spring 4 - Fatal编程技术网

Java Spring4迁移-ClassCastException:无法转换为org.springframework.web.method.HandlerMethod?

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

从Spring3.0升级到4.0时,我遇到了这个异常

我用这个更新了不推荐使用的类

DefaultAnnotationHandlerMapping,AnnotationMethodHandlerAdapter
with
RequestMappingHandlerMapping,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.