从源码角度解读 xml 文件中的 xmlns、xsi、xsd
xml 文件中的 xmlns、xsi、xsd
- xmlns
- xsi
- xsd
下面是 spring.xml 中的一段:
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd">
- xmlns:xml namespace,xml 命名空间。
- xsi:xml schema instance,xml 模式实例。
- xsd:xml schema definition,xml 模式定义。
一个 xml 文件里至少包含 xmlns、xmlns:xsi 和 xsi:schemaLocation,如 pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd">
xmlns
xml namespace,xml 命名空间。
对比上面的 spring.xml 和 pom.xml,我们就可以知道
- xmlns= 后面配置的是当前 xml 的骨架标签。
如 spring.xml 里的 < beans > 和 < bean > 等。
如 pom.xml 里的 < project > 和 < dependence > 等。 - xmlns: 后面配置的是我们能够使用的除了骨架标签以外的其它标签。
如 xsi,这是最特殊的一个,下面具体讲。
如 context,它使你可以配置 <context:component-scan base-package=“com.xxx”>
拿 xmlns:context="http://www.springframework.org/schema/context"
来举例子,它其实对应的是这个文件
里的这个处理类
这个处理类是这样的
它的初始化其实是把,< context > 标签后面 : 接的元素名 与对应的解析器放到了一个名叫 parsers 的 HashMap 里:
BeanDefinitionParser 的作用,就是把一个一个配置转换成 BeanDefinition。
BeanDefinition 就是一个关于 Bean 的信息的类,它包含了这个 Bean 实例化中需要的各种属性,是十分重要的一个类。
而 context:component-scan,注定了
<context:component-scan base-package="com.xx"></context:component-scan>
这个名叫 context 的 bean 会用于扫描 @Component。
xsi
xml schema instance,xml 模式实例。
为什么叫模式实例,因为标签的解析方式并不是只有一种,你自己也可以定义 < beans >标签的含义,所以我们需要确定我们用的是那种实例。
xmlns:xsi= 后面配置的基本都一样,都是 “http://www.w3.org/2001/XMLSchema-instance”,因为我们配置xmlns:xsi,都是为了能够使用 xsi:schemaLocation。
而使用 xsi:schemaLocation 是为了能够配置所有的 xmlns 后面的 URI 与实际的 xsd 文件的对应关系(所以它们成对出现)。
当然这也包括 xmlns= 后面的 URI。
当然这不包括 xmlns:xsi 后面的 URI,因为人无法通过抓自己头发的方式把自己提起来(人只能提起其它东西)。
那么,什么是 xsd 文件呢?
xsd
xml schema definition,xml 模式定义。
定义,就是定义这个标签该怎么用,不能有其它作用。
它其实在这里对应它的实际文件:
打开 org/springframework/context/config/spring-context.xsd,里面其实定义的是标签的规范,如
这有配置了这些,你才能使用 component-scan。
希望这些对你有所帮助!
从源码角度解读 xml 文件中的 xmlns、xsi、xsd相关推荐
- spring 源码分析(1)-xml文件解析
我们在最开始接触spring的时候,看到不少书spring入门的例子如下 ApplicationContext atx = new ClassPathXmlApplicationContext(&qu ...
- Tomcat7.0源码分析——server.xml文件的加载与解析
前言 作为Java程序员,对于Tomcat的server.xml想必都不陌生.本文基于Tomcat7.0的Java源码,对server.xml文件是如何加载和解析进行分析. 加载过程分析 Bootst ...
- 从源码角度解析线程池中顶层接口和抽象类
摘要:我们就来看看线程池中那些非常重要的接口和抽象类,深度分析下线程池中是如何将抽象这一思想运用的淋漓尽致的. 本文分享自华为云社区<[高并发]深度解析线程池中那些重要的顶层接口和抽象类> ...
- springSecurity源码分析-spring-security.xml文件配置
在spring-security.xml文件中配置 在配置文件中我们主要使用标签来过多成配置 <!-- 配置不拦截的资源 --> <security:http pattern=&qu ...
- 详解 xml 文件头部的 xmlns:xsi
xmlns:(XML Namespaces的缩写)是一个属性,是XML(标准通用标记语言的子集)命名空间的声明.作用是赋予命名空间一个唯一的名称. 命名空间是什么呢? 由于xml允许你自己定义自己的标 ...
- Tomcat源码分析——server.xml文件的加载
前言 作为Java程序员,对于tomcat的server.xml想必都不陌生.本文基于Tomcat7.0的Java源码,对server.xml文件是如何加载的进行分析. 源码分析 Bootstrap的 ...
- C#语言实例源码系列-实现XML文件操作
专栏分享 点击跳转=>Unity3D特效百例 点击跳转=>案例项目实战源码 点击跳转=>游戏脚本-辅助自动化 点击跳转=>Android控件全解手册
- windows 批处理把所有java源码导入一个txt文件中
首先在src下搜*.java,把搜到的文件全拷出来放在allsrc目录下, 然后在allsrc目录下建个run.bat,键入以下内容for %%i in (*.java) do type %%i&g ...
- 对应到对象 数据库驼峰_从源码角度理解Mybatis字段映射(一) - 驼峰式命名
凯伦说,公众号ID: KailunTalk,努力写出最优质的技术文章,欢迎关注探讨. 在上篇博客-[JDBC] 处理ResultSet,构建Java对象中提到,我们需要分析Mybatis在转换Resu ...
最新文章
- torch 常用函数
- matlab usewhitebg,我有一个matlab的程序运行出错,各位大神求救,很急啊
- PHP的display_errors与error_reporting
- 【代码笔记】iOS-实现网络图片的异步加载和缓存
- Silverlight C# 游戏开发:关于精灵for Silverlight容器
- 计算机水平考试模拟,计算机水平考试模拟试题(doc 23页)
- fir数字滤波器设计与软件实现_基于FPGA低通滤波器的FIR的设计
- 为什么给他们讲WP的技术秘密
- 【3dmax千千问】食住玩初学3dmax插件神器第24课:3dmax自学渲染效果图教程|疯狂模渲大师、室内设计师、效果图绘图员都应该如何认识VRAY或扫描线CORONA渲染器及其VR核心算法的作用?
- 配置switchOmegaProxy插件
- 全网最火! 阿里 P6 级,廖雪峰的「全栈架构师」开讲了
- 连续十日票房日冠,《人生大事》带热了电影大盘!它凭何突出重围?
- firefox 返回 16 进制 颜色值
- Python3 初学实践案例(10)对象转字典 object to dict
- Docker镜像的三大构建方式
- 【零基础】MT4量化入门一:跑一个简单的boll
- JAVA应用程序转换为Applet
- 计算机毕业设计 汉语多音字注音研究
- Visual Studio 2013 配置Boost库。 如何编译和选择,遇到无法打开文件“libboost_thread-vc120-mt-gd-1_58.lib的解决办法
- CSS 动画 多帧 animation 旋转