springmvc源码解析MvcNamespaceHandler之<mvc:default-servlet-handler/>

说在前面

本次主要介绍springmvc配置解析。更多源码解析文章请关注“天河聊技术”微信公众号。

 

springmvc配置解析

本次继续介绍MvcNamespaceHandler。

进入到这个方法org.springframework.web.servlet.config.DefaultServletHandlerBeanDefinitionParser#parse

@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;
   }

 

说到最后

本次源码解析仅代表个人观点,仅供参考。

 

 

转载于:https://my.oschina.net/u/3775437/blog/3022321

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值