spring mvc為何多注入了個SimpleUrlHandlerMapping?


最近在調試項目時,debug DispatcherServlet時,發現handlerMappings屬性包含了RequestMappingHandlerMapping、SimpleUrlHandlerMapping、BeanNameUrlHandlerMapping。

可是我明明只聲明了

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>

真是百思不得解啊,因為是舊項目基礎改造的,以為是別的地方有隱秘用法,找了半天,沒找到,今天下班時,突然想到我注冊了

<mvc:resources location="" mapping=""/>

翻看ResourcesBeanDefinitionParser,查到了關鍵代碼:

1.

RootBeanDefinition handlerMappingDef = new RootBeanDefinition(SimpleUrlHandlerMapping.class);
     handlerMappingDef.setSource(source);
     handlerMappingDef.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
     handlerMappingDef.getPropertyValues().add("urlMap", urlMap);

2.

// Ensure BeanNameUrlHandlerMapping (SPR-8289) and default HandlerAdapters are not "turned off"
     // Register HttpRequestHandlerAdapter
     MvcNamespaceUtils.registerDefaultComponents(parserContext, source);

指向

public static void registerDefaultComponents(ParserContext parserContext, Object source) {
       registerBeanNameUrlHandlerMapping(parserContext, source);
        registerHttpRequestHandlerAdapter(parserContext, source);
        registerSimpleControllerHandlerAdapter(parserContext, source);
    }

才知道原因了。呵呵。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM