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

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)在这里"。

相关推荐
30955666613 分钟前
股票接口返回 404 与空数组的排查笔记:证书状态与级别参数
java·笔记·python·ios·iphone·股票数据api·股票数据接口
nice_lcj52016 分钟前
MySQL 存储引擎入门:InnoDB 和 MyISAM 到底怎么选
java·数据库·mysql·面试·innodb·存储引擎·myisam
文丑颜不良啊31 分钟前
LeetCode2861~2880题目解析
java·leetcode
装不满的克莱因瓶43 分钟前
设计模式之策略模式核心概念和应用场景
java·后端·设计模式·架构·系统架构·策略模式
晴天的雨.9921 小时前
【C++】继承篇
java·开发语言·c++
SomeOtherTime1 小时前
第 1 讲:内存布局与所有权解剖——栈帧、胖指针与“移动/拷贝”在汇编层面的真实面目
java·开发语言·汇编
qq_406981031 小时前
c++ lamda(三)Lambda表达式
java·前端·c++
头发还在的女程序员1 小时前
Java在线租房系统源码解析:Spring Boot+Vue 3+UniApp房源管理与预约看房方案
java·vue.js·spring boot·租房小程序·租房系统·租房软件
FYKJ_20101 小时前
springboot同人周边订单管理系统48955-计算机毕业设计、课程设计
java·javascript·vue.js·spring boot·django·php·课程设计
Flynn Liang1 小时前
LLM 应用安全:Prompt 注入、越权与输入输出护栏
java·人工智能·大模型·langchain4j·llm 安全·prompt 注入·guardrail