这里resourceLoader其实就是ClassPathXmlApplicationContext
1.ClassPathXmlApplicationContext
在上文中图例就能看出来
获取资源组可能存在多个bean.xml
循环单独加载资源组
创建一个编码资源并解析
获取当前正在加载的资源发现是空
创建了一个字节输入流,继续解析
委托给Document并加载Document类。
注册beanBeanDefinitions
上图131行判断是不是默认的命名空间即:http://www.springframework.org/schema/beans
很显然profile属性是空。
delegate的作用在于处理beans标签的嵌套,其实Spring配置文件是可以写成这样的:
<?xml version="1.0" encoding="UTF-8"?>
<beans>
<bean class="base.SimpleBean"></bean>
<beans>
<bean class="java.lang.Object"></bean>
</beans>
</beans>
xml(schema)的命名空间其实类似于java的报名,命名空间采用URL,比如Spring的是这样:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"></beans>
xmlns属性就是xml规范定义的用来设置命名空间的。这样设置了之后其实里面的bean元素全名就相当于http://www.springframework.org/schema/beans:bean,可以有效的防止命名冲突。命名空间可以通过规范定义的org.w3c.dom.Node.getNamespaceURI方法获得。
预处理xml,点进去发现是空
解析beandefinitions和后处理xml后续继续说。
原文地址:https://blog.csdn.net/qq_36649893/article/details/134596066
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_1038.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!