6.Spring源码解析-loadBeanDefinitions(String location)

6.Spring源码解析-loadBeanDefinitions(String location)_第1张图片
6.Spring源码解析-loadBeanDefinitions(String location)_第2张图片
这里resourceLoader其实就是ClassPathXmlApplicationContext
1.ClassPathXmlApplicationContext
在上文中图例就能看出来
6.Spring源码解析-loadBeanDefinitions(String location)_第3张图片
获取资源组可能存在多个bean.xml

6.Spring源码解析-loadBeanDefinitions(String location)_第4张图片
循环单独加载资源组
6.Spring源码解析-loadBeanDefinitions(String location)_第5张图片
6.Spring源码解析-loadBeanDefinitions(String location)_第6张图片
6.Spring源码解析-loadBeanDefinitions(String location)_第7张图片
6.Spring源码解析-loadBeanDefinitions(String location)_第8张图片
创建一个编码资源并解析
6.Spring源码解析-loadBeanDefinitions(String location)_第9张图片
获取当前正在加载的资源发现是空
6.Spring源码解析-loadBeanDefinitions(String location)_第10张图片
6.Spring源码解析-loadBeanDefinitions(String location)_第11张图片
创建了一个字节输入流,继续解析
6.Spring源码解析-loadBeanDefinitions(String location)_第12张图片
委托给Document并加载Document类。
6.Spring源码解析-loadBeanDefinitions(String location)_第13张图片
注册beanBeanDefinitions
6.Spring源码解析-loadBeanDefinitions(String location)_第14张图片
6.Spring源码解析-loadBeanDefinitions(String location)_第15张图片
6.Spring源码解析-loadBeanDefinitions(String location)_第16张图片
6.Spring源码解析-loadBeanDefinitions(String location)_第17张图片
上图131行判断是不是默认的命名空间即:http://www.springframework.org/schema/beans
6.Spring源码解析-loadBeanDefinitions(String location)_第18张图片
很显然profile属性是空。
delegate的作用在于处理beans标签的嵌套,其实Spring配置文件是可以写成这样的:

    
<beans>    
  <bean class="base.SimpleBean">bean>
  <beans>
    <bean class="java.lang.Object">bean>
  beans>
beans>

xml(schema)的命名空间其实类似于java的报名,命名空间采用URL,比如Spring的是这样:

    
<beans xmlns="http://www.springframework.org/schema/beans">beans>

xmlns属性就是xml规范定义的用来设置命名空间的。这样设置了之后其实里面的bean元素全名就相当于http://www.springframework.org/schema/beans:bean,可以有效的防止命名冲突。命名空间可以通过规范定义的org.w3c.dom.Node.getNamespaceURI方法获得。

6.Spring源码解析-loadBeanDefinitions(String location)_第19张图片
预处理xml,点进去发现是空
6.Spring源码解析-loadBeanDefinitions(String location)_第20张图片

6.Spring源码解析-loadBeanDefinitions(String location)_第21张图片
解析beandefinitions和后处理xml后续继续说。

你可能感兴趣的:(springIOC,spring,数据库,mysql)