2014-01-30 58 views
0

我收到此異常,而從春季3.0升級到4.0Spring 4 Migration -ClassCastException:無法轉換爲org.springframework.web.method.HandlerMethod?

我更新了過時的類與此link

DefaultAnnotationHandlerMapping,AnnotationMethodHandlerAdapterRequestMappingHandlerMapping ,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

+0

你的測試用例是錯誤的,處理'@ RequestMethod'註解的方法已經改變了相當大的距離'AnnotationMethodHandlerAdapter'到'RequestMappingHandlerAdapter'。它現在直接指向要調用的方法(即'HandlerMethod'),所以把你的完整控制器放在那裏是不會工作的, –

+0

爲什麼你甚至測試Spring類?你應該測試你的'@ Controller' bean。這些'HandlerAdapter'對象被Spring的DispatcherServlet堆棧(和MVC配置)使用。你應該假設他們工作並測試你自己的代碼。 –

+0

@SotiriosDelimanolis - 我正在測試我的控制器本身。不測試春季班。我正在使用'MockHttpServletRequest,MockHttpServletResponse,HandlerAdapter'和測試響應數據 – Gangaraju

回答

0

它現在的工作。在本link提到的,我需要更新我的控制器的測試情況下使用

WebApplicationContext,MockMvc & RequestMappingHandlerAdapter 

,而不是

MockHttpServletRequest, MockHttpServletResponse & HandlerAdapter. 
相關問題