使用spring配置文件.xml的頭文件
前言
工作有一段時間了,每次自己創(chuàng)建項目寫xml配置文件的時候,xml配置的頭部命名空間都是從別的項目拷貝過來,或者上網(wǎng)拷貝的,從來也沒考慮過是什么意思,有什么用。
最近自己練習,直接創(chuàng)建Spring Leagcy Project項目的時候,自動下載的配置文件總會報錯,于是借此機會,深入學習一下。
關(guān)于xml命名空間
XML 命名空間 是由國際化資源標識符 (IRI) 標識的 XML 元素和屬性集合;該集合通常稱作 XML“詞匯”。
在XML中,元素名稱是由開發(fā)者定義的,當兩個不同的文檔使用相同的元素名時,就會發(fā)生命名沖突。
舉個簡單的栗子,命名空間很像 Java 中的包,不同的包下面可以存放相同的類名,只要在引入類時前面加上類的包就可以避免同名類的沖突。
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文件默認的命名空間,初始化beans
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
聲明XML Schema實例,聲明后就可以使用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提供了一個xml 命名空間到對應(yīng)的XSD(Xml Schema Definition)文件的一個映射,它的值由一個或多個URI引用對組成,
兩個URI之間以空白符分隔(空格和換行均可)。
第一個URI是定義的 XML命名空間的值,第二個URI給出Schema文檔的實際位置,
Schema處理器將從這個位置讀取Schema文檔,該文檔的targetNamespace必須與第一個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文件的校驗
Spring默認在啟動時是要從配置的命名空間的位置加載XSD文件來驗證xml文件的,所以如果有的時候斷網(wǎng)了,或者一些開源軟件切換域名,那么就很容易碰到應(yīng)用啟動不了。
為了防止這種情況,Spring提供了一種機制,即默認從本地加載XSD文件,當本地沒有時才根據(jù)實際的URI去聯(lián)網(wǎng)獲得。
總結(jié)
現(xiàn)在對于spring配置文件的頭部有了一定的了解,以后也可以根據(jù)需求,添加對應(yīng)的命名空間,schemaLocation。
在寫schemaLocation時,命名空間后面對應(yīng)的xsd文件,可以不加版本號,讓spring加載本地版本對應(yīng)的xsd文件。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
簡單了解SpringMVC緩存對靜態(tài)資源有什么影響
這篇文章主要介紹了簡單了解SpringMVC緩存對靜態(tài)資源有什么影響,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-09-09Java線程間協(xié)作wait、notify和notifyAll詳解
這篇文章主要介紹了Java線程間協(xié)作wait、notify和notifyAll詳解,在 Java 中可以用 wait、notify 和 notifyAll 來實現(xiàn)線程間的通信,盡管關(guān)于wait和notify的概念很基礎(chǔ),它們也都是Object類的函數(shù),但用它們來寫代碼卻并不簡單,,需要的朋友可以參考下2023-10-10Mybatis通過Mapper代理連接數(shù)據(jù)庫的方法
這篇文章主要介紹了Mybatis通過Mapper代理連接數(shù)據(jù)庫的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-11-11Dubbo?retries?超時重試機制的問題原因分析及解決方案
這篇文章主要介紹了Dubbo?retries?超時重試機制的問題,解決方案是通過修改dubbo服務(wù)提供方,將timeout超時設(shè)為20000ms或者設(shè)置retries=“0”,禁用超時重試機制,感興趣的朋友跟隨小編一起看看吧2022-04-04Spring動態(tài)管理定時任務(wù)之ThreadPoolTaskScheduler解讀
這篇文章主要介紹了Spring動態(tài)管理定時任務(wù)之ThreadPoolTaskScheduler解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12解決spring-integration-mqtt頻繁報Lost connection錯誤問題
這篇文章主要介紹了解決spring-integration-mqtt頻繁報Lost connection錯誤問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03