0
我收到此異常,而從春季3.0升級到4.0Spring 4 Migration -ClassCastException:無法轉換爲org.springframework.web.method.HandlerMethod?
我更新了過時的類與此link
DefaultAnnotationHandlerMapping,AnnotationMethodHandlerAdapter
與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 name="handlerAdapter"
class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<array>
....
....
</array>
</property>
</bean>
在我的測試用例中調用這個函數。
handlerAdapter.handle(request, response, controller);
其在此呼籲org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter
return handleInternal(request, response, (HandlerMethod) handler);
它未能控制器轉換爲HandlerMethod
你的測試用例是錯誤的,處理'@ RequestMethod'註解的方法已經改變了相當大的距離'AnnotationMethodHandlerAdapter'到'RequestMappingHandlerAdapter'。它現在直接指向要調用的方法(即'HandlerMethod'),所以把你的完整控制器放在那裏是不會工作的, –
爲什麼你甚至測試Spring類?你應該測試你的'@ Controller' bean。這些'HandlerAdapter'對象被Spring的DispatcherServlet堆棧(和MVC配置)使用。你應該假設他們工作並測試你自己的代碼。 –
@SotiriosDelimanolis - 我正在測試我的控制器本身。不測試春季班。我正在使用'MockHttpServletRequest,MockHttpServletResponse,HandlerAdapter'和測試響應數據 – Gangaraju