抄别人的文章,备忘。
Schema命名空间的声明
对于基于XML的配置,Spring 1.0的配置文件采用DTD格式,Spring 2.0以后使用Schema的格式,后者让不同类型的配置拥有了自己的命名空间,使配置文件更具扩展性。此外,Spring基于Schema配置方案为许多领域的问题提供了简化的配置方法,配置工作因此得到了大幅简化。
采取基于Schema配置格式,文件头的声明会复杂一些,先看一个简单的示例:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
--1.默认的命名空间
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
--2.xsi标准命名空间,用于指定义自定义命名空间的schema文件
xmlns:aop="http://www.springframework.org/schema/aop"
--3.自定义命名空间,简称aop。
--后面跟的是空间全称,必须在xsi命名空间为自定义空间指定对应schema文件
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
--4.为每个命名空间指定具体的schema文件
<!-- 使用默认的空间命名配置-->
<bean id="green" class="com.my.Green"/>
<!-- aop命名空间的配置-->
<aop:config>
<aop:advisor pointcut="execution(**..Green.*(..))" advice-ref="txAdvice"/>
</aop:config>
</beans>
要了解文件头中声明的内容,需要学习一点XML Schema的知识,Schema在文档根节点中通过xmlns对文档中的命名空间进行声明。我们在上面的代码中定义了3个命名空间:
① 默认命名空间:它没有空间名,用于Spring Bean的定义;
② xsi命名空间:这个命名空间用于为每个文档中命名空间指定相应的Schema样式文件,是标准组织定义的标准命名空间;
③ aop命名空间:这个命名空间是Spring配置AOP的命名空间,是用户自定义的命名空间。
命名空间的定义分为两个步骤:第一步指定命名空间的名称,第二步指定命名空间的Schema文档样式文件的位置,用空格或回车换行进行分隔。
在第一步中,需要指定命名空间的缩略名和全名,请看下面配置所定义的命名空间:
xmlns:aop="http://www.springframework.org/schema/aop"
aop为命名空间的别名,一般使用简洁易记的名称,文档后面的元素可通过命名空间别名加以区分,如<aop:config/>等。而http://www.springframework.org/schema/aop为空间的全限定名,习惯上用文档发布机构的官方网站和相关网站目录作为全限定名。这种命名方式既可以标识文档所属的机构,又可以很好地避免重名的问题。但从XML Schema语法来说,别名和全限定名都可以任意命名。
如果命名空间的别名为空,则表示该命名空间为文档默认命名空间,文档中无命名空间前缀的元素都属于默认命名空间,如<beans/>、<bean/>等都属于①处定义的默认命名空间。
在第二步中,为每个命名空间指定了对应的Schema文档格式定义文件,定义的语法是:
<命名空间1>空格<命名空间1的schema文件>空格<命名空间2>空格<命名空间2的schema文件>....
命名空间使用全限定名,每个组织机构在发布Schema文件后,都会为该Schema文件提供一个引用的URL地址,一般使用这个URL地址指定命名空间对应的Schema文件。命名空间名称和对应的Schema文件地址之间使用空格或回车分隔,不同的命名空间之间也使用这种分隔方法。
指定命名空间的Schema文件地址有两个用途:XML解析器可以获取Schema文件并对文档进行格式合法性验证;在开发环境下,IDE可以引用Schema文件对文档编辑提供诱导功能。
XML的特殊字符
XML中共有5个特殊的字符,分别是:&<>“’。如果配置文件中的注入值包括这些特殊字符,就需要进行特别处理。有两种解决方法:其一,采用本例中的<![CDATA[ ]]>特殊标签,将包含特殊字符的字符串封装起来;其二,使用XML转义序列表示这些特殊的字符,这5个特殊字符所对应XML转义序列在表4-2中说明:
< ----> <
> ----> >
& ----> &
" ----> "
' ----> '
Spring在进行XML配置时,如果属性值包含了一个XML的特殊符号,因此我们特意在属性值外添加了一个<![CDATA[ ]]>的XML特殊处理标签,<![CDATA[ ]]>的作用是让XML解析器将标签中的字符串当作普通的文本对待,以防止某些字符串对XML格式造成破坏。来看一个例子
<bean id="car" class="com.baobaotao.attr.Car">
<property name="maxSpeed">
<value>200</value>
</property>
<property name="brand">①
<value><![CDATA[红旗&CA72]]></value>
</property>
</bean>
如果使用XML转义序列,我们可以使用以下的配置替换代码清单4-10中的配置:
<property name="brand"><value>红旗&CA72</value></property>
最后说下命名空间的作用:XML标签没有被预定义,每个标签要自己定义,每个人都能定义,所以会出现很多人或公司定义出相同的标签,而这些标签因定义的人不同,意义也不一样。因此要有命名空间,说白了就是指明这个标签谁定义的,然后根据不同的定义的人来解释这个标签。
分享到:
相关推荐
在扩展Spring Schema的过程中,你需要定义一个新的命名空间(namespace),然后提供对应的解析器(NamespaceHandler)和元素处理器(BeanDefinitionParser)。命名空间是XML文件中识别自定义标签的关键,而解析器和...
在Spring框架中,Schema是一种定义XML文档结构的规范,它通过一系列的命名空间(namespace)和元素(element)来定义Bean的属性和行为。例如,`<beans>`元素是Spring配置的基本容器,而`<bean>`元素则用来声明一个...
以下是关于“spring framework schema”及其相关标签“springschema”的详细知识点: 1. **Schema**: 在Spring Framework中,schema是一种XML配置方式,用于定义bean的行为和依赖关系。例如,`jdbc`、`jms`、`cache...
`jee:`命名空间用于配置这些企业级服务,使Spring更好地融入到企业环境中。 总结起来,"spring-5.2.9.RELEASE-schema.zip"压缩包中的每个子文件都对应了Spring框架的一个重要方面,它们共同构成了Spring的强大功能...
自定义Schema解析是Spring框架提供的一个强大特性,它允许开发者创建自己的XML命名空间,从而定义自己的配置元素和属性。这在大型项目中特别有用,因为可以创建特定于项目的配置约定,提高代码的可读性和可维护性。 ...
4. **Namespace和Element**:Spring的schema通常包含多个命名空间(namespace),每个命名空间代表一类功能,如`<beans>`、`<context>`、`<aop>`等。每个命名空间下有多个元素(element),如`<bean>`、`<property>`...
在XML Schema中,`beans`命名空间提供了诸如 `<bean>`、`<property>`、`<constructor-arg>`等元素,用于定义对象实例及其依赖关系。通过这些元素,我们可以实现对象的无状态化、解耦合,从而提高代码的可维护性和可...
这个类的作用是处理与自定义命名空间相关的解析工作。在`init()`方法中,通过`registerBeanDefinitionParser()`注册了一个名为`annotation-endpoint`的配置支持元素。`AnnotationBeanDefinitionParser`类则负责解析...
在实际应用中,`@Endpoint`注解可能会包含一些属性,比如服务的命名空间、端点地址等。在`BeanDefinitionParser`中,我们需要读取这些属性,并将它们设置到生成的`BeanDefinition`中。这样,当Spring初始化bean时,...
本文实例讲述了Spring使用util:命名空间简化配置操作。分享给大家供大家参考,具体如下: 一 配置 <?xml version=1.0 encoding=GBK?> <!-- 指定Spring配置文件的根元素和Schema 导入p:命名空间和util:...
4. **命名空间管理**:XML Schema支持命名空间,库能有效地管理和处理命名空间,确保正确解析和引用元素和属性。 5. **错误报告**:在验证过程中,如果发现不符合规范的地方,会生成详细的错误信息,帮助开发者调试...
我们推荐你尝试一下 SpringSource 工具套件,因为它具有处理 Spring 组合命名空间的特殊功能。 要开始在你的应用环境里使用 security 命名空间,你所需要的就是把架构声明添加到你的应用环境文件里: ...
这个压缩包包含了一系列与Spring框架相关的XML架构文件,这些文件定义了Spring配置文件中可以使用的元素、属性和命名空间,帮助开发者理解和构建合法的Spring配置。接下来,我们将深入探讨每个子文件夹所代表的...
例如,`http://www.springframework.org/schema/beans`是Spring核心组件的配置命名空间,`http://www.springframework.org/schema/aop`则用于配置AOP方面的相关规则。 4. **Spring 5.0.0.RELEASE** 版本的改进与新...
XML Schema的支持和自定义命名空间的使用大大减少了基于XML的配置。使用Java5及更新版本java的开发人员如今可以利用植入了像泛型(generic)和注解等新语言特性的Spring库。最近,和AspectJ表达式语言的紧密集成,...
- **命名空间扩展**:除了基本的`beans`命名空间外,Spring还支持其他多种命名空间,例如`context`、`aop`、`tx`等,以提供更为丰富的配置选项。 - **示例**:引入`context`命名空间及其对应的Schema Location。 `...
- 在XML Catalog页面,你会看到一个“Entries”区域,这里用来管理你的XML命名空间和对应的XSD文件。 3. **添加XSD引用**: - 点击“Entries”区域下方的`Add...`按钮,弹出添加对话框。 - 在“Kind”选项中,...