springmvc源碼解析MvcNamespaceHandler之

說在前面web

本次主要介紹springmvc配置解析。更多源碼解析文章請關注「天河聊技術」微信公衆號。spring

 

springmvc配置解析微信

本次繼續介紹MvcNamespaceHandler。mvc

進入到這個方法org.springframework.web.servlet.config.DefaultServletHandlerBeanDefinitionParser#parseapp

@Override
   public BeanDefinition parse(Element element, ParserContext parserContext) {
      Object source = parserContext.extractSource(element);
//    解析default-servlet-name屬性值
      String defaultServletName = element.getAttribute("default-servlet-name");
//    註冊DefaultServletHttpRequestHandler bean定義
      RootBeanDefinition defaultServletHandlerDef = new RootBeanDefinition(DefaultServletHttpRequestHandler.class);
      defaultServletHandlerDef.setSource(source);
      defaultServletHandlerDef.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
      if (StringUtils.hasText(defaultServletName)) {
         defaultServletHandlerDef.getPropertyValues().add("defaultServletName", defaultServletName);
      }
      String defaultServletHandlerName = parserContext.getReaderContext().generateBeanName(defaultServletHandlerDef);
      parserContext.getRegistry().registerBeanDefinition(defaultServletHandlerName, defaultServletHandlerDef);
      parserContext.registerComponent(new BeanComponentDefinition(defaultServletHandlerDef, defaultServletHandlerName));
      Map<String, String> urlMap = new ManagedMap<String, String>();
//    註冊mapping
      urlMap.put("/**", defaultServletHandlerName);
      RootBeanDefinition handlerMappingDef = new RootBeanDefinition(SimpleUrlHandlerMapping.class);
      handlerMappingDef.setSource(source);
      handlerMappingDef.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
      handlerMappingDef.getPropertyValues().add("urlMap", urlMap);
      String handlerMappingBeanName = parserContext.getReaderContext().generateBeanName(handlerMappingDef);
      parserContext.getRegistry().registerBeanDefinition(handlerMappingBeanName, handlerMappingDef);
      parserContext.registerComponent(new BeanComponentDefinition(handlerMappingDef, handlerMappingBeanName));
      // Ensure BeanNameUrlHandlerMapping (SPR-8289) and default HandlerAdapters are not "turned off" ->
      MvcNamespaceUtils.registerDefaultComponents(parserContext, source);
      return null;
   }

 

說到最後ide

本次源碼解析僅表明我的觀點,僅供參考。url

相關文章
相關標籤/搜索