Spring源码分析:
- Spring源码:源码编译及阅读源码入门
- Spring源码:XML默认标签解析
- Spring源码:自定义标签解析
- Spring源码:Bean工厂的后置处理器invokeBeanFactoryPostProcessors
自定义标签解析
除了 Spring 默认的标签,还可以自定义标签,如最常使用的 context:component-scan
,并且通过改标签的命名空间来解析。
那么什么是命名空间?
在 XML 中,元素名称是由开发者定义的,当两个不同的文档使用相同的元素名时,就会发生命名冲突。
如 Spring 的 XML 配置文件,配置项都在 <beans>
标签中,但这时开发者如果自定义一个自己的标签,同样命名为 <beans>
,便造成了冲突,XML 解析器无法分辨这些冲突的命名。因此,对于 Spring 来说在最基本的配置中,含有 xmlns,xmlns:xsi,xsi:schemaLocation
三项,这三项是 Spring 最基本的命名空间,其含义如下:
- xmlns 表示是该 XML 文件的默认命名空间;
- xmlns:xsi 表示该 XML 文件遵守 xml 规范;
- xsi:schemaLocation 表示具体用到的 schema 资源。
如下配置文件:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframewor