zoukankan      html  css  js  c++  java
  • SpringMVC源码阅读(三)

    先理一下Bean的初始化路线

    org.springframework.beans.factory.support.AbstractBeanDefinitionReader

    public int loadBeanDefinitions(Resource... resources) throws BeanDefinitionStoreException
    {
        Assert.notNull(resources, "Resource array must not be null");
        int counter = 0;
        for (Resource resource : resources) {
          counter += loadBeanDefinitions(resource);
        }
        return counter;
    }
    

    org.springframework.beans.factory.xml.XmlBeanDefinitionReader

    public int loadBeanDefinitions(Resource resource)
        throws BeanDefinitionStoreException
      {
        return loadBeanDefinitions(new EncodedResource(resource));
      }
    
    protected int doLoadBeanDefinitions(InputSource inputSource, Resource resource)
        throws BeanDefinitionStoreException
      {
        try
        {
          int validationMode = getValidationModeForResource(resource);
          Document doc = this.documentLoader.loadDocument(inputSource, getEntityResolver(), this.errorHandler, validationMode, isNamespaceAware());
          
          return registerBeanDefinitions(doc, resource);
        }
        catch (BeanDefinitionStoreException ex) {
          throw ex;
        }
        catch (SAXParseException ex) {
          throw new XmlBeanDefinitionStoreException(resource.getDescription(), "Line " + ex.getLineNumber() + " in XML document from " + resource + " is invalid", ex);
        }
        catch (SAXException ex)
        {
          throw new XmlBeanDefinitionStoreException(resource.getDescription(), "XML document from " + resource + " is invalid", ex);
        }
        catch (ParserConfigurationException ex)
        {
          throw new BeanDefinitionStoreException(resource.getDescription(), "Parser configuration exception parsing XML from " + resource, ex);
        }
        catch (IOException ex)
        {
          throw new BeanDefinitionStoreException(resource.getDescription(), "IOException parsing XML document from " + resource, ex);
        }
        catch (Throwable ex)
        {
          throw new BeanDefinitionStoreException(resource.getDescription(), "Unexpected exception parsing XML document from " + resource, ex);
        }
      }
    

      

    org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader

     protected void parseBeanDefinitions(Element root, BeanDefinitionParserDelegate delegate)
      {
        if (delegate.isDefaultNamespace(root)) {
          NodeList nl = root.getChildNodes();
          for (int i = 0; i < nl.getLength(); i++) {
            Node node = nl.item(i);
            if ((node instanceof Element)) {
              Element ele = (Element)node;
              if (delegate.isDefaultNamespace(ele)) {
                parseDefaultElement(ele, delegate);
              }
              else {
                delegate.parseCustomElement(ele);
              }
            }
          }
        }
        else {
          delegate.parseCustomElement(root);
        }
      }
    

      

  • 相关阅读:
    Javascript、Jquery获取浏览器和屏幕各种高度宽度
    使用jquery修改css中带有!important的样式属性
    jQuery事件之on()方法绑定多个选择器,多个事件
    JS 实现类似打印的效果(一个字一个字显示)
    编写jQuery 插件
    HTML5中新增加Input 的种类
    巧用Ajax的beforeSend提高用户体验
    window窗口操作
    CIDR
    mysql
  • 原文地址:https://www.cnblogs.com/wuxinliulei/p/5067985.html
Copyright © 2011-2022 走看看