2016-11-08 82 views
1

我開始從基於XML的配置轉移到@EnableWebMvc和WebMvcConfigurerAdapter之一。但是當我改變配置時,它似乎從DefaultAnnotationHandlerMapping切換到RequestMappingHandlerAdapter。Spring @EnableWebMvc使用DefaultAnnotationHandlerMapping配置

如果我想切換回DefaultAnnotationHandlerMapping,我該如何設置它?

(我知道DefaultAnnotationHandlerMapping已被棄用,但我還是想知道我是怎麼設置的彈簧使用它)

+0

什麼是您的原始XML配置? –

回答

0

javadoc of @EnableWebMvc狀態

添加此批註的@Configuration類導入Spring MVC從WebMvcConfigurationSupport配置[...]

其中WebMvcConfigurationSupport

此類註冊以下HandlerMappings

  • RequestMappingHandlerMapping下令在0℃將請求映射到註釋的控制器的方法。
  • HandlerMapping在1處排序以將URL路徑直接映射到查看名稱。
  • BeanNameUrlHandlerMapping在2處排序以將URL路徑映射到控制器bean名稱。
  • HandlerMappingInteger.MAX_VALUE-1處訂購以提供靜態資源請求。
  • HandlerMappingInteger.MAX_VALUE處訂購將請求轉發到默認的servlet。

這就是RequestMappingHandlerMapping的來源。這種「默認」配置或多或少等同於在XML配置中指定

<mvc:annotation-driven /> 

如果你想聲明一個DefaultAnnotationHandlerMapping(按順序)RequestMappingHandlerMapping,然後聲明你自己的bean並將它的順序設置得更低。

@Bean 
public DefaultAnnotationHandlerMapping defaultAnnotationHandlerMapping() { 
    DefaultAnnotationHandlerMapping defaultAnnotationHandlerMapping = new DefaultAnnotationHandlerMapping(); 
    defaultAnnotationHandlerMapping.setOrder(-1); 
    // and other properties 
    return defaultAnnotationHandlerMapping; 
} 

如果你想這是在DispatcherServlet註冊的唯一HandlerMapping,然後命名豆"handlerMapping"DispatcherServlet#detectAllHandlerMappings屬性設置爲false

相關問題