Spring XML 配置简介
Spring XML 配置里用到了 XML 命名空间与 Schema 校验机制。
流程如下:
XML 解析 → 命名空间绑定 → Schema 校验
我们来逐一介绍:
1. xmlns
- 作用:定义默认命名空间(XML Namespace)。
- 在 <beans> 中一般写成:
xmlns="http://www.springframework.org/schema/beans"
表示 <beans> 及其子元素(如 <bean>、<property> 等)默认属于 Spring beans 的 XML 命名空间。
- 设计原因:
避免标签名冲突。XML 本身只定义了语法,不限制标签名字,多个 XML 片段合并时,可能出现 <bean> 在不同场景有不同含义。命名空间就是用 URL 唯一标识一类 XML 元素。
2. xmlns:xsi
- 作用:引入 XML Schema Instance 命名空间。
- 通常写成:
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
这是 W3C 标准的命名空间,不是 Spring 特有的。
- 它使得我们可以在 XML 中使用 xsi: 前缀的属性,例如 xsi:schemaLocation。
3. xsi:schemaLocation
- 作用:指定当前 XML 文档所遵循的 Schema (XSD 文件 详见我的介绍文章 ) 的位置。
- 一般写法:
http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd"
这里有两个部分(成对出现):
命名空间 URI:http://www.springframework.org/schema/beans
对应的 XSD 位置:https://www.springframework.org/schema/beans/spring-beans.xsd
- 设计原因:
- XML 解析器通过命名空间知道“这一类标签属于哪一类文档”。
- 但要做 语法校验/智能提示,还需要具体的 Schema 文件 (XSD)。
- xsi:schemaLocation 就是告诉解析器:当遇到某个命名空间时,到哪里加载对应的 XSD 进行校验。
- IDE(如 IDEA、Eclipse)也能根据它提供自动补全、错误检查。
总结关系
- xmlns → 定义默认命名空间(标签属于哪个语义域)。
- xmlns:xsi → 引入 schema-instance 命名空间,用于支持 xsi: 前缀。
- xsi:schemaLocation → 指定命名空间和 XSD 文件的映射关系,帮助解析器进行验证和 IDE 补全。
通俗理解:
xmlns 是“我是谁”,
xmlns:xsi 是“我要用 schema 机制”,
xsi:schemaLocation 是“我的规则(XSD)在这里”。