<?xml version="1.0" encoding="UTF-8"?>
<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" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd"
sping的配置文件中节本上都会有上面的一些配置信息
第一行:说明这是一个xml文档,任何格式良好的xml文档都必须第一行是xml的声明,必须使用xml解析器解析。
第二行:
beans : 标签,是xml文件的根节点
xmlns :是XML NameSpace的缩写,因为xml文件的标签名称都是自己定义的,别人和自己的很有可能重复但是功能不一样,所以要加上一个namespace加以区分,类似于java中package
xmlns:xsi :全称 xml schema instance ,是指这个xml文件遵循指定的xml规范。是指用到的schema资源文件里定义的元素约定的规范,即 .xsd 文件里的元素定义的遵守什么样的规范
xsi:schemaLocation : 都是成对出现的,第一个值表示命名空间(是指用到的文档里遵循的xml规范),第二个值表示描述该名称空间的模式文档的具体位置,两者用空格隔开,schemaLocation 属性用来引用(schema)模式文档,解析器可以在需要的情况(一般是项目启动时)下使用这个文档对 XML 实例文档进行校验。
举例:
定义了 xmlns : aa = "url1" 和 xmlns : bb = "url2"
那么使用如下:
<aa:table xmlns : aa = "url1" >
<aa:name>张三</aa:name>
<aa:age>13</aa:age>
</aa:table>
<bb:table xmlns : bb = "url2" >
<bb:name>李四</bb:name>
<bb:age>14</bb:age>
</bb:table>
两者使用 xmlns : 前缀 来定义,那么xml解析器就不会报错。
xmlns和 xmlns:前缀 有什么区别?
答:xmlns 使用的是默认的命名空间,例如上图中的xmlns="http://www.springframework.org/schema/beans"
xmlns:前缀 表示使用xsi作为前缀的Namespace,当然前缀xsi需要在文档中声明。
一般在项目启动的时候会根据spring的配置文件中的 xsd文件进行校验,默认会去依赖的包的目录下寻找对应的xsd文档来进行校验,当找不到在spring配置文件中的xsd文档,那么就会访问网络资源进行校验。
所以,在spring的配置文件中的xsd文档最好不要写版本号,它会默认的去寻找当前依赖的jar包的版本的xsd文件。
eg:
不指定版本号 http://www.springframework.org/schema/task/spring-task.xsd
指定版本号http://www.springframework.org/schema/task/spring-task-4.1.xsd
如果你的服务器是私网的也就是不能访问网络资源,那么你依赖的jar包的版本还不是 4.1,那么在项目启动时候,无法在本地找到4.1.xsd文档,只能去访问网络资源,此时是访问不了网络的,那么就会报错