spring XML配置文件標(biāo)簽詳解
spring的XML配置文件的標(biāo)簽大體可以分為兩種:

其中的默認(rèn)標(biāo)簽,我們前面文章里面出現(xiàn)的標(biāo)簽都是默認(rèn)標(biāo)簽,是spring本身自帶的,不需要我們?nèi)ヒ肫渌麞|西。而自定義標(biāo)簽則是指非默認(rèn)標(biāo)簽的其他的由我們或產(chǎn)品發(fā)行方自定義的對接spirng的XML標(biāo)簽。這里其實(shí)就關(guān)系到spring整合其他框架了。
默認(rèn)標(biāo)簽與自定義標(biāo)簽最大的區(qū)別就是,自定義標(biāo)簽需要我們自己引入其它命名空間約束的標(biāo)簽(通過前綴方式引入)。這里我們先來講一下Bean的XML配置文件的標(biāo)頭。
命名空間、xsd介紹
提到配置文件里面的標(biāo)簽,就離不開要談到xsd和DTD,他們都可以用來描述xml文檔的結(jié)構(gòu),以前一些老的代碼里面可能還會(huì)看到DTD,但是隨著xsd支持?jǐn)?shù)據(jù)類型,所以現(xiàn)在看到的基本都是xsd了。
XML Schema 語言是用來定義xml結(jié)構(gòu)的。簡稱xsd(XML Schema Definition)
如下圖,這是一個(gè)默認(rèn)的spring Bean的XML配置文件的標(biāo)頭:

xmlns:意為XML 命名空間,用于定義一套xml標(biāo)簽的規(guī)范。這個(gè)屬性用于定義這個(gè) XML 文檔的默認(rèn)命名空間,在這個(gè)示例中告訴解析器這個(gè) XML 文件中的元素(如<bean>)是http://www.springframework.org/schema/beans這個(gè)命名空間下定義的。
xmlns:xsi:用于引入XML 模式實(shí)例命名空間(也就是XML Schema Instance)。這個(gè)命名空間提供了一些用于驗(yàn)證 XML 文檔結(jié)構(gòu)的屬性。
xsi:;schemaLocation:指定 XML 文檔所遵循的 XML Schema 的位置。這個(gè)屬性通常會(huì)有一對的值,用來指定xmlns屬性定義的文件的位置??粗褚粋€(gè)網(wǎng)址,實(shí)際可能映射的是本地的某個(gè)jar包里面的xsd文件。而且寫法上,先寫命名空間,再寫xsd地址。
總結(jié)一下引入schema文件的具體步驟:
1、查看schema文檔,找到根元素,在xml中寫出來
2、根元素來自哪個(gè)命名空間。使用xmlns指令來聲明(命名空間的作用:它指的是一個(gè)環(huán)境,所用的標(biāo)簽來自于哪個(gè)環(huán)境定義的)
3、聲明引入的名稱空間跟哪個(gè)xsd文件對應(yīng)
4、聲明schemaLocation哪里來的,一般都是某個(gè)標(biāo)準(zhǔn)(寫法上都是先寫命名空間+具體文件的位置,成對)
除此之外,在spring里面還有7大模塊,每個(gè)模塊也有它們自己的對應(yīng)標(biāo)簽。

例如context組件,在使用注解和配置類來平替bean.xml配置文件的時(shí)候,我們就需要使用到context文件的標(biāo)簽。詳細(xì)的可以去看我的另一篇文章:
<beans>標(biāo)簽配置多環(huán)境
在實(shí)際開發(fā)中,我們往往會(huì)有很多環(huán)境。比如編寫代碼一個(gè)環(huán)境,測試一個(gè)環(huán)境,運(yùn)維又是一個(gè)環(huán)境,每個(gè)環(huán)境可能都會(huì)有自己特定的某個(gè)東西。為了便于這些環(huán)境分開,在spring的XML配置環(huán)境里面,我們可以使用<beans>來給特定的環(huán)境配置其所需要的環(huán)境。
這里邊示范邊講解,我們編寫配置文件:

其中,在配置文件的根標(biāo)簽下可以繼續(xù)使用<beans>,并不是說<beans>只作為根標(biāo)簽。在用來配置環(huán)境的Bean的<beans>標(biāo)簽,還需要通過屬性profile來給這個(gè)<beans>的內(nèi)容啟用的環(huán)境命名。相關(guān)的User類和AServer類大家自己定義即可,里面沒什么東西。
然后是測試類運(yùn)行:

其中,使用System.setProperty();來啟用我們的spring配置文件的相關(guān)環(huán)境,而且我們的代碼運(yùn)行中,多次啟用了不同的環(huán)境,那么只會(huì)生效我們最新啟用的那個(gè)環(huán)境。
這里兩個(gè)環(huán)境都有aServer,但是text環(huán)境中的aServer里面給屬性name賦值為李四,dev賦值為張三。
另外還需要注意,我們更改環(huán)境后,我們的容器還要重新加載一下進(jìn)行更新,因?yàn)檫@個(gè)容器是根據(jù)調(diào)用對象的環(huán)境,返回對應(yīng)的Bean配置,而其他不符合環(huán)境的Bean配置不會(huì)給到調(diào)用對象。
我們看斷點(diǎn)的變量池,這是第一個(gè)斷點(diǎn)處的內(nèi)容,也就是開發(fā)環(huán)境下的Bean對象:

這是第二斷點(diǎn)處的內(nèi)容:

當(dāng)然,把多個(gè)環(huán)境的配置全部寫在一個(gè)配置文件里面,會(huì)顯得很亂,所以多環(huán)境還常搭配<import>標(biāo)簽使用。
<import>引入其他資源配置文件
我們編寫兩個(gè)bean的配置文件:


其中,我們的bean1文件中沒有配置user,但是我們在bean2文件中配置了user,我們在bean1引入bean2,我們就可以得到bean2里面的配置了。
測試類:

運(yùn)行結(jié)果:

前面我們講到了多環(huán)境常搭配<import>,也就是在這里。我們在主配置文件里面,不再直接在配置多環(huán)境的<beans>標(biāo)簽下編寫內(nèi)容,而是把內(nèi)容編寫到另一個(gè)單獨(dú)的配置文件里面,然后在主配置文件下面的多環(huán)境使用<import>導(dǎo)入它。
引入自定義標(biāo)簽
這個(gè)自定義,不只是在說我們自己個(gè)人定義的。實(shí)際應(yīng)用中,是指spring整合其他框架時(shí),其他框架有提供自己相關(guān)XML配置的標(biāo)簽,我們可以將其引入來使用。
在我的另一篇文章里講到了springContext標(biāo)簽的引入,但是那是spring自己的模塊,如果我們要引入其他框架,就不像那里面演示的改幾個(gè)單詞就可以了。
在這里我以導(dǎo)入dubbo為例,分享一下我的個(gè)人經(jīng)驗(yàn):
首先,我們要導(dǎo)入dubbo的jar包,然后在我們的Bean配置文件的表頭中引入相關(guān)標(biāo)簽。
引入相關(guān)標(biāo)簽的操作和spring一樣,關(guān)鍵在于導(dǎo)入dubbo的schema。但是我們要怎么寫呢?任何官方通常都會(huì)給出相關(guān)說明文檔,所以我們?nèi)サ絛ubbo的官網(wǎng)查找。
進(jìn)入到官網(wǎng)之后,我們直接ctrl+F,打開頁面關(guān)鍵詞搜索,輸入 "Schema":

搜索出結(jié)果,上來就是我們要找的導(dǎo)入過程。
這里注意我們要添加的只有 xmlns:dubbo一行,以及xsi:schemaLocation中關(guān)于dubbo的xsd的成對映射。
到此這篇關(guān)于spring XML配置文件標(biāo)簽的文章就介紹到這了,更多相關(guān)spring XML配置文內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
從application.properties配置文件獲取的漢字亂碼的解決方法
平時(shí)從配置文件各種讀取配置參數(shù)都正常,但是有時(shí)候放了個(gè)中文就亂碼,你肯定試過網(wǎng)上好多方法,都沒解決,那么來看下面,恭喜你終于找這里了,本文給大家介紹了從application.properties配置文件獲取的漢字亂碼的解決方法,需要的朋友可以參考下2024-03-03
RecyclerChart動(dòng)態(tài)屬性圖標(biāo)聯(lián)動(dòng)數(shù)據(jù)動(dòng)態(tài)加載詳解
這篇文章主要為大家介紹了RecyclerChart動(dòng)態(tài)屬性圖標(biāo)聯(lián)動(dòng)數(shù)據(jù)動(dòng)態(tài)加載詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
spring入門教程之bean的繼承與自動(dòng)裝配詳解
眾所周知Spring里面的bean就類似是定義的一個(gè)組件,而這個(gè)組件的作用就是實(shí)現(xiàn)某個(gè)功能的,下面這篇文章主要給大家介紹了關(guān)于spring入門教程之bean繼承與自動(dòng)裝配的相關(guān)資料,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11
SpringBoot JPA懶加載失效的解決方案(親測有效)
這篇文章主要介紹了SpringBoot JPA懶加載失效的解決方案(親測有效),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
解決mapstruct在eclipse生成不了mapper的實(shí)現(xiàn)類問題
這篇文章主要介紹了解決mapstruct在eclipse生成不了mapper的實(shí)現(xiàn)類問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11

