簡體   English   中英

使用DefaultAnnotationHandlerMapping的Spring @EnableWebMvc配置

[英]Spring @EnableWebMvc configuration using DefaultAnnotationHandlerMapping

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

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

(我知道不推薦使用DefaultAnnotationHandlerMapping,但我仍然想知道如何設置spring來使用它)

@EnableWebMvcjavadoc說明

將此批注添加到@Configuration類從WebMvcConfigurationSupport導入Spring MVC配置[...]

其中WebMvcConfigurationSupport

此類注冊以下HandlerMappings

  • RequestMappingHandlerMapping排序為0,用於將請求映射到帶注釋的控制器方法。
  • HandlerMapping從1開始排序,直接將URL路徑映射到視圖名稱。
  • BeanNameUrlHandlerMapping在2處排序,以將URL路徑映射到控制器bean名稱。
  • HandlerMappingInteger.MAX_VALUE-1排序,以提供靜態資源請求。
  • HandlerMappingInteger.MAX_VALUE排序,以將請求轉發到默認servlet。

這就是RequestMappingHandlerMapping來源。 此“默認”配置或多或少等同於指定

<mvc:annotation-driven />

在XML配置中。

如果要在RequestMappingHandlerMapping前面(按順序)聲明DefaultAnnotationHandlerMapping ,則為它聲明自己的bean並將其順序設置得更低。

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

如果您希望這是在DispatcherServlet注冊的唯一HandlerMapping ,則將bean命名為"handlerMapping"並將DispatcherServlet#detectAllHandlerMappings屬性設置為false

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM