spring XML配置文件標簽詳解
spring的XML配置文件的標簽大體可以分為兩種:
其中的默認標簽,我們前面文章里面出現(xiàn)的標簽都是默認標簽,是spring本身自帶的,不需要我們?nèi)ヒ肫渌麞|西。而自定義標簽則是指非默認標簽的其他的由我們或產(chǎn)品發(fā)行方自定義的對接spirng的XML標簽。這里其實就關(guān)系到spring整合其他框架了。
默認標簽與自定義標簽最大的區(qū)別就是,自定義標簽需要我們自己引入其它命名空間約束的標簽(通過前綴方式引入)。這里我們先來講一下Bean的XML配置文件的標頭。
命名空間、xsd介紹
提到配置文件里面的標簽,就離不開要談到xsd和DTD,他們都可以用來描述xml文檔的結(jié)構(gòu),以前一些老的代碼里面可能還會看到DTD,但是隨著xsd支持數(shù)據(jù)類型,所以現(xiàn)在看到的基本都是xsd了。
XML Schema 語言是用來定義xml結(jié)構(gòu)的。簡稱xsd(XML Schema Definition)
如下圖,這是一個默認的spring Bean的XML配置文件的標頭:
xmlns:意為XML 命名空間,用于定義一套xml標簽的規(guī)范。這個屬性用于定義這個 XML 文檔的默認命名空間,在這個示例中告訴解析器這個 XML 文件中的元素(如<bean>)是http://www.springframework.org/schema/beans這個命名空間下定義的。
xmlns:xsi:用于引入XML 模式實例命名空間(也就是XML Schema Instance)。這個命名空間提供了一些用于驗證 XML 文檔結(jié)構(gòu)的屬性。
xsi:;schemaLocation:指定 XML 文檔所遵循的 XML Schema 的位置。這個屬性通常會有一對的值,用來指定xmlns屬性定義的文件的位置??粗褚粋€網(wǎng)址,實際可能映射的是本地的某個jar包里面的xsd文件。而且寫法上,先寫命名空間,再寫xsd地址。
總結(jié)一下引入schema文件的具體步驟:
1、查看schema文檔,找到根元素,在xml中寫出來
2、根元素來自哪個命名空間。使用xmlns指令來聲明(命名空間的作用:它指的是一個環(huán)境,所用的標簽來自于哪個環(huán)境定義的)
3、聲明引入的名稱空間跟哪個xsd文件對應(yīng)
4、聲明schemaLocation哪里來的,一般都是某個標準(寫法上都是先寫命名空間+具體文件的位置,成對)
除此之外,在spring里面還有7大模塊,每個模塊也有它們自己的對應(yīng)標簽。
例如context組件,在使用注解和配置類來平替bean.xml配置文件的時候,我們就需要使用到context文件的標簽。詳細的可以去看我的另一篇文章:
<beans>標簽配置多環(huán)境
在實際開發(fā)中,我們往往會有很多環(huán)境。比如編寫代碼一個環(huán)境,測試一個環(huán)境,運維又是一個環(huán)境,每個環(huán)境可能都會有自己特定的某個東西。為了便于這些環(huán)境分開,在spring的XML配置環(huán)境里面,我們可以使用<beans>來給特定的環(huán)境配置其所需要的環(huán)境。
這里邊示范邊講解,我們編寫配置文件:
其中,在配置文件的根標簽下可以繼續(xù)使用<beans>,并不是說<beans>只作為根標簽。在用來配置環(huán)境的Bean的<beans>標簽,還需要通過屬性profile來給這個<beans>的內(nèi)容啟用的環(huán)境命名。相關(guān)的User類和AServer類大家自己定義即可,里面沒什么東西。
然后是測試類運行:
其中,使用System.setProperty();來啟用我們的spring配置文件的相關(guān)環(huán)境,而且我們的代碼運行中,多次啟用了不同的環(huán)境,那么只會生效我們最新啟用的那個環(huán)境。
這里兩個環(huán)境都有aServer,但是text環(huán)境中的aServer里面給屬性name賦值為李四,dev賦值為張三。
另外還需要注意,我們更改環(huán)境后,我們的容器還要重新加載一下進行更新,因為這個容器是根據(jù)調(diào)用對象的環(huán)境,返回對應(yīng)的Bean配置,而其他不符合環(huán)境的Bean配置不會給到調(diào)用對象。
我們看斷點的變量池,這是第一個斷點處的內(nèi)容,也就是開發(fā)環(huán)境下的Bean對象:
這是第二斷點處的內(nèi)容:
當(dāng)然,把多個環(huán)境的配置全部寫在一個配置文件里面,會顯得很亂,所以多環(huán)境還常搭配<import>標簽使用。
<import>引入其他資源配置文件
我們編寫兩個bean的配置文件:
其中,我們的bean1文件中沒有配置user,但是我們在bean2文件中配置了user,我們在bean1引入bean2,我們就可以得到bean2里面的配置了。
測試類:
運行結(jié)果:
前面我們講到了多環(huán)境常搭配<import>,也就是在這里。我們在主配置文件里面,不再直接在配置多環(huán)境的<beans>標簽下編寫內(nèi)容,而是把內(nèi)容編寫到另一個單獨的配置文件里面,然后在主配置文件下面的多環(huán)境使用<import>導(dǎo)入它。
引入自定義標簽
這個自定義,不只是在說我們自己個人定義的。實際應(yīng)用中,是指spring整合其他框架時,其他框架有提供自己相關(guān)XML配置的標簽,我們可以將其引入來使用。
在我的另一篇文章里講到了springContext標簽的引入,但是那是spring自己的模塊,如果我們要引入其他框架,就不像那里面演示的改幾個單詞就可以了。
在這里我以導(dǎo)入dubbo為例,分享一下我的個人經(jīng)驗:
首先,我們要導(dǎo)入dubbo的jar包,然后在我們的Bean配置文件的表頭中引入相關(guān)標簽。
引入相關(guān)標簽的操作和spring一樣,關(guān)鍵在于導(dǎo)入dubbo的schema。但是我們要怎么寫呢?任何官方通常都會給出相關(guān)說明文檔,所以我們?nèi)サ絛ubbo的官網(wǎng)查找。
進入到官網(wǎng)之后,我們直接ctrl+F,打開頁面關(guān)鍵詞搜索,輸入 "Schema":
搜索出結(jié)果,上來就是我們要找的導(dǎo)入過程。
這里注意我們要添加的只有 xmlns:dubbo一行,以及xsi:schemaLocation中關(guān)于dubbo的xsd的成對映射。
到此這篇關(guān)于spring XML配置文件標簽的文章就介紹到這了,更多相關(guān)spring XML配置文內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決springmvc項目中使用過濾器來解決請求方式為post時出現(xiàn)亂碼的問題
這篇文章主要介紹了springmvc項目中使用過濾器來解決請求方式為post時出現(xiàn)亂碼的問題,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08Idea代理設(shè)置與Java程序的代理設(shè)置方式
文章總結(jié):學(xué)習(xí)WebService時,使用Fiddler抓取包數(shù)據(jù),發(fā)現(xiàn)Idea代理設(shè)置與Java程序代理設(shè)置不同,Java程序需要在發(fā)送請求前設(shè)置代理,代碼如下2025-01-01SpringBoot實現(xiàn)在一個模塊中引入另一個模塊
這篇文章主要介紹了SpringBoot實現(xiàn)在一個模塊中引入另一個模塊的方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-10-10Java中xxl-job實現(xiàn)分片廣播任務(wù)的示例
本文主要介紹了Java中xxl-job實現(xiàn)分片廣播任務(wù)的示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03