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

      

  • 相关阅读:
    屏幕录像大师2016【破解版】
    Hibernate demo之使用注解
    Hibernate demo之使用xml
    Hibernate 的<generator class="native"></generator>的不同属性含义
    java 动态实现接口
    c# emit 实现类的代理
    c# emit 动态实现接口
    java nio读取和写入文件
    java 读取Properties
    Java中利用MessageFormat对象实现类似C# string.Format方法格式化
  • 原文地址:https://www.cnblogs.com/wuxinliulei/p/5067985.html
Copyright © 2011-2022 走看看