好比一個標準的beans.xml文件以下所示:html
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> </beans>
解釋:spring
一、【xmlns="http://www.springframework.org/schema/beans"】swift
聲明xml文件默認的命名空間,表示未使用其餘命名空間的全部標籤的默認命名空間。url
二、【xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"】spa
聲明XML Schema實例,聲明後就可使用schemaLocation屬性。.net
三、【xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd】3d
指定Schema的位置這個屬性必須結合命名空間使用。這個屬性有兩個值,第一個值表示須要使用的命名空間。第二個值表示供命名空間使用的XML schema的位置。code
上面配置的命名空間指定xsd規範文件,這樣你在進行下面具體配置的時候就會根據這些xsd規範文件給出相應的提示,好比說每一個標籤是怎麼寫的,都有些什麼屬性是均可以智能提示的,在啓動服務的時候也會根據xsd規範對配置進行校驗。xml
配置技巧:對於屬性值的寫法是有規律的,中間使用空格隔開,後面的值是前面的補充,也就是說,前面的值是去除了xsd文件後得來的。htm
疑問:
對於一些配置文件上xsi:schemaLocation的屬性是這樣寫的:
【xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd】
指定了具體版本,這個是什麼意思?那麼下次如何快速的知道是哪一個版本?
解釋:
在每一個xsi:schemaLocation屬性中,都是一個具備指定版本號的xsd文件,而對於沒有加版本號的問題,是因爲使用了默認值,實質上這個默認值是有一個具體的版本號的。固然,你也可使用具體的版本號。
而對於這些xsd文件的路徑查找的方法,能夠定位到每個jar包去找,好比上面使用了4.1.4版本beans的jar包,那麼能夠經過Eclipse打開spring-beans-4.1.4.RELEASE.jar文件,並打開META-INF/spring.schemas文件,以下所示:
能夠看出,默認的地址上也是制定了具體的版本號的,那麼根據後面的地址打開org/springframework/beans/factory/xml目錄,以下所示:
能夠看出最後會來這裏定位xsd文件,從而實現標籤的提示。
而這裏只展現了要用的部分的url,通常這些都是根據本身的功能須要引入的,好比我要引入util的功能,那麼url也能夠經過這樣的方法快速的找到這些地址。
注意:xsi:schemaLocation屬性能夠指定多個,指定多個的意思就是引入多個功能。
以下所示是一個引入了使用aop和tx功能的beans.xml文件:
<?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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.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"> ... </beans>
解釋:
一、【xmlns:aop="http://www.springframework.org/schema/aop"】
聲明前綴爲aop的命名空間,後面的URL用於標示命名空間的地址不會被解析器用於查找信息。其唯一的做用是賦予命名空間一個唯一的名稱。當命名空間被定義在元素的開始標籤中時,全部帶有相同前綴的子元素都會與同一個命名空間相關聯。
同時也是爲beans.xml文件引入aop的功能,引入後就能夠在包裹的範圍內使用<aop>標籤。
二、【xmlns:tx="http://www.springframework.org/schema/tx"】
原理同上。
三、xsi:schemaLocation屬性同上解釋,使用快速的方法來定位和編寫這個url。
一些技巧:
關於在beans.xml要使用哪些功能,官網上已經提供了每一個功能說明和標準的頭文件信息,當咱們在開發使用時要哪些功能,均可以上官網去定位。
http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#xsd-configuration
其實這個地址的入口在這裏http://projects.spring.io/spring-framework/,打開以後,定位到右邊邊,想要哪一個版本點進去便可。
關於書寫的技巧,好比一些標籤已經沒有內嵌了,那麼會有兩種寫法,這兩種寫法效果都是一直的,如:<context:annotation-config/>和<context:annotation-config></context:annotation-config>,爲了美觀來講,咱們會選擇前者。
總結:
XML Schema命名空間避免命名衝突,就像Java中的package同樣,將不一樣做用的標籤分門別類(好比Spring中的tx命名空間針對事務類的標籤,context命名空間針對組件的標籤)。
參考:
http://iswift.iteye.com/blog/1657537