论坛首页 Java企业应用论坛

学习Spring必学的Java基础知识(4)----XML基础知识

浏览 25307 次
精华帖 (2) :: 良好帖 (3) :: 新手帖 (12) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-05-12   最后修改:2012-06-09
引述要学习Spring框架的技术内幕,必须事先掌握一些基本的Java知识,正所谓“登高必自卑,涉远必自迩”。以下几项Java知识和Spring框架息息相关,不可不学(我将通过一个系列分别介绍这些Java基础知识,希望对大家有所帮助。):

[1] Java反射知识-->Spring IoC :http://www.iteye.com/topic/1123081
[2] Java动态代理-->Spring AOP :http://www.iteye.com/topic/1123293
[3] 属性编辑器,即PropertyEditor-->Spring IoC:http://www.iteye.com/topic/1123628
[4] XML基础知识-->Spring配置:http://www.iteye.com/topic/1123630
[5] 注解-->Spring配置:http://www.iteye.com/topic/1123823
[6] 线程本地变更,即ThreadLocal-->Spring事务管理:http://www.iteye.com/topic/1123824
[7] 事务基础知识-->Spring事务管理:http://www.iteye.com/topic/1124043
[8] 国际化信息-->MVC:http://www.iteye.com/topic/1124044
[9] HTTP报文-->MVC:http://www.iteye.com/topic/1124408




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>红旗&amp;CA72</value></property>


Schema命名空间的声明

对于基于XML的配置,Spring 1.0的配置文件采用DTD格式,Spring 2.0以后使用Schema的格式,后者让不同类型的配置拥有了自己的命名空间,使配置文件更具扩展性。此外,Spring基于Schema配置方案为许多领域的问题提供了简化的配置方法,配置工作因此得到了大幅简化。

采取基于Schema配置格式,文件头的声明会复杂一些,先看一个简单的示例:



要了解文件头中声明的内容,需要学习一点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文档格式定义文件,定义的语法是:



命名空间使用全限定名,每个组织机构在发布Schema文件后,都会为该Schema文件提供一个引用的URL地址,一般使用这个URL地址指定命名空间对应的Schema文件。命名空间名称和对应的Schema文件地址之间使用空格或回车分隔,不同的命名空间之间也使用这种分隔方法。

指定命名空间的Schema文件地址有两个用途:XML解析器可以获取Schema文件并对文档进行格式合法性验证;在开发环境下,IDE可以引用Schema文件对文档编辑提供诱导功能。

这些文章摘自于我的《Spring 3.x企业应用开发实战》,我将通过连载的方式,陆续在此发出。欢迎大家讨论。
  • 大小: 29.3 KB
  • 大小: 138.9 KB
  • 大小: 15.6 KB
   发表时间:2012-05-12  
写的一看就能让我明白,还得多向你学习写作技巧啊!
0 请登录后投票
   发表时间:2012-05-16  
坐等ThreadLocal
0 请登录后投票
   发表时间:2012-05-16  
努力学习写文档
0 请登录后投票
   发表时间:2012-05-16  
liyueling 写道
努力学习写文档

恩 stamen写的很不错 很值得我们学习
0 请登录后投票
   发表时间:2012-05-17  
拜读LZ好帖,经典教学,一看就懂。值得学习
0 请登录后投票
   发表时间:2012-05-25  
前段时间买了作者的这本书,感觉还好,不过有错别字。
0 请登录后投票
   发表时间:2012-05-25   最后修改:2012-05-25
楼主和jinnianshilongnian都是好人啊。

to 楼主和 jinnianshilongnian,给你们建议啊,最近iteye改版,怨言颇多,何不趁此机会自己写个论坛,类似以前的iteye,广大iteyer或许会捧场啊,到时就是肉饼第二了,有钱有闲也说不定。
0 请登录后投票
   发表时间:2012-05-31   最后修改:2012-05-31
能不能再多一些xml相关知识呢,目前只是一个头部,还有基本的语法,以及程序里如何解析等等
0 请登录后投票
   发表时间:2012-06-21  
四书五经 写道
楼主和jinnianshilongnian都是好人啊。

to 楼主和 jinnianshilongnian,给你们建议啊,最近iteye改版,怨言颇多,何不趁此机会自己写个论坛,类似以前的iteye,广大iteyer或许会捧场啊,到时就是肉饼第二了,有钱有闲也说不定。


这是要造反啊...
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics