![](/img/trans.png)
[英]Spring - What's the effect of using @EnableWebMvc without @Configuration annotation?
[英]Spring @EnableWebMvc configuration using DefaultAnnotationHandlerMapping
我開始從基於XML的配置轉移到@EnableWebMvc和WebMvcConfigurerAdapter。 但是當我更改配置時,它似乎從DefaultAnnotationHandlerMapping切換到RequestMappingHandlerAdapter。
如果我想切換回DefaultAnnotationHandlerMapping,我該如何設置它?
(我知道不推薦使用DefaultAnnotationHandlerMapping,但我仍然想知道如何設置spring來使用它)
將此批注添加到
@Configuration
類從WebMvcConfigurationSupport
導入Spring MVC配置[...]
此類注冊以下
HandlerMappings
:
RequestMappingHandlerMapping
排序為0,用於將請求映射到帶注釋的控制器方法。HandlerMapping
從1開始排序,直接將URL路徑映射到視圖名稱。BeanNameUrlHandlerMapping
在2處排序,以將URL路徑映射到控制器bean名稱。HandlerMapping
以Integer.MAX_VALUE-1
排序,以提供靜態資源請求。HandlerMapping
在Integer.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.