使用spring配置文件.xml的頭文件
前言
工作有一段時(shí)間了,每次自己創(chuàng)建項(xiàng)目寫xml配置文件的時(shí)候,xml配置的頭部命名空間都是從別的項(xiàng)目拷貝過來,或者上網(wǎng)拷貝的,從來也沒考慮過是什么意思,有什么用。
最近自己練習(xí),直接創(chuàng)建Spring Leagcy Project項(xiàng)目的時(shí)候,自動(dòng)下載的配置文件總會(huì)報(bào)錯(cuò),于是借此機(jī)會(huì),深入學(xué)習(xí)一下。
關(guān)于xml命名空間
XML 命名空間 是由國際化資源標(biāo)識符 (IRI) 標(biāo)識的 XML 元素和屬性集合;該集合通常稱作 XML“詞匯”。
在XML中,元素名稱是由開發(fā)者定義的,當(dāng)兩個(gè)不同的文檔使用相同的元素名時(shí),就會(huì)發(fā)生命名沖突。
舉個(gè)簡單的栗子,命名空間很像 Java 中的包,不同的包下面可以存放相同的類名,只要在引入類時(shí)前面加上類的包就可以避免同名類的沖突。
Spring常用配置頭
<?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:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
<!-- 定義跳轉(zhuǎn)的文件的前后綴 ,視圖模式配置-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/view/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>配置頭解析
xmlns="http://www.springframework.org/schema/beans"
聲明xml文件默認(rèn)的命名空間,初始化beans
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
聲明XML Schema實(shí)例,聲明后就可以使用schemaLocation屬性
xmlns:context="http://www.springframework.org/schema/context"
綁定context命名空間,綁定之后便可使用<context:component-scan base-package=""/>等context為前綴的的元素。
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd"> schemaLocation提供了一個(gè)xml 命名空間到對應(yīng)的XSD(Xml Schema Definition)文件的一個(gè)映射,它的值由一個(gè)或多個(gè)URI引用對組成,
兩個(gè)URI之間以空白符分隔(空格和換行均可)。
第一個(gè)URI是定義的 XML命名空間的值,第二個(gè)URI給出Schema文檔的實(shí)際位置,
Schema處理器將從這個(gè)位置讀取Schema文檔,該文檔的targetNamespace必須與第一個(gè)URI(XML命名空間的值)相匹配。
在xsi:schemaLocation后面配置的字符串都是成對的,前面的是命名空間的URI,后面是xsd文件的URI;
如何找到Spring命名空間
Spring的命名空間uri和xsd文件地址在Spring的依賴中都可以找到,以spring-context為例:
在spring-context的jar包里,有META-INF文件夾,如下

在spring.handlers中保存著spring-context的命名空間,對應(yīng)xml文件頭的命名空間

在spring.schemas中保存著對應(yīng)的xsd文件uri,以及在本地對應(yīng)的文件位置

Spring中xml文件的校驗(yàn)
Spring默認(rèn)在啟動(dòng)時(shí)是要從配置的命名空間的位置加載XSD文件來驗(yàn)證xml文件的,所以如果有的時(shí)候斷網(wǎng)了,或者一些開源軟件切換域名,那么就很容易碰到應(yīng)用啟動(dòng)不了。
為了防止這種情況,Spring提供了一種機(jī)制,即默認(rèn)從本地加載XSD文件,當(dāng)本地沒有時(shí)才根據(jù)實(shí)際的URI去聯(lián)網(wǎng)獲得。
總結(jié)
現(xiàn)在對于spring配置文件的頭部有了一定的了解,以后也可以根據(jù)需求,添加對應(yīng)的命名空間,schemaLocation。
在寫schemaLocation時(shí),命名空間后面對應(yīng)的xsd文件,可以不加版本號,讓spring加載本地版本對應(yīng)的xsd文件。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java設(shè)計(jì)日歷可視化的詳細(xì)步驟記錄
這篇文章主要給大家介紹了關(guān)于java設(shè)計(jì)日歷可視化的相關(guān)資料,通過自定義的CircleLabel類來突出顯示今天的日期,并使用BorderLayout布局管理窗口組件,文章詳細(xì)描述了各個(gè)類和方法的設(shè)計(jì)思想和實(shí)現(xiàn)邏輯,需要的朋友可以參考下2024-12-12
Java service層獲取HttpServletRequest工具類的方法
今天小編就為大家分享一篇關(guān)于Java service層獲取HttpServletRequest工具類的方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-12-12
idea復(fù)制項(xiàng)目并重命名實(shí)現(xiàn)方式(項(xiàng)目另存為)
本文介紹了解決在Eclipse中復(fù)制項(xiàng)目時(shí)遇到的問題的方法,通過直接復(fù)制項(xiàng)目、刪除workspace.xml文件、修改iml文件以及重新打開項(xiàng)目,成功解決了問題,文章最后鼓勵(lì)讀者參考這些方法并給予支持2026-04-04
SWT(JFace) 體驗(yàn)之FontRegistry
測試代碼如下:2009-06-06

