之前一直没有注意过spring xml文件头,一直以来都是复制黏贴现成的模板,后来需要加个东西,发现涉及文件头部所以就因此好奇,这个东西是干啥的呢?
这个就是文件的头部了,前面的xml:xxx=”URL”都是命名空间,
xmlns="http://www.springframework.org/schema/beans"
是默认的命名空间。那么什么是命名空间呢?
命名空间
<table>
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
和table是一个桌子对象
<table>
<name>Dinner Table</name>
<width>80</width>
<length>120</length>
</table>
他们两个都用了相同的<table/>
标签名那么xml解析的时候时无法解析的,所以命名空间的用途就来到了,它定义了使用的标签。
spring xml 命名空间格式如下 xmlns:namespace-prefix="namespaceURI"
命名空间前缀和命名空间URI是核心,
这样就能解决上面说的<table/>
的冲突,例如<mvc:annotation-driven/> 和 <tx:annotation-driven/>
两个都是annotation-driven
标签,table也可以这样<a:table/>和<b:table/>
那么url指向哪里呢?
url指向的位置
例如xmlns:context的namespaceURL,url实际上是文件夹的路径,在jar的配置文件有定义
打开spring.handlers
再根据路径找到文件
可以看到,都继承了NameHandlerSupport。至于NameHandlerSupport我也不大懂,这里也不方便串太多,后面文章会给出。应该是解析标签转换为代码。
那么下面的xsi:schemaLocation的是干啥的呢?
xsi:schemaLocation
xsi全称xml schema definition xml扫描定义,值也是url可以是多值以空格或者换行隔开,为上面配置的命名空间指定xsd规范文件,命名空间是为解析标签转换为代码提供大的方向,那么规范文件则规范一些内部东西如标签的属性名等。
url指向的位置
url指向的位置和命名空间指向的位置差不多。