[spring]XML配置文件標簽

? ? spring的XML配置文件的標簽大體可以分為兩種:

? ? 其中的默認標簽,我們前面文章里面出現的標簽都是默認標簽,是spring本身自帶的,不需要我們去引入其他東西。而自定義標簽則是指非默認標簽的其他的由我們或產品發行方自定義的對接spirng的XML標簽。?這里其實就關系到spring整合其他框架了。

? ? 默認標簽與自定義標簽最大的區別就是,自定義標簽需要我們自己引入其它命名空間約束的標簽(通過前綴方式引入)。這里我們先來講一下Bean的XML配置文件的標頭。

命名空間、xsd介紹

? ? 提到配置文件里面的標簽,就離不開要談到xsd和DTD,他們都可以用來描述xml文檔的結構,以前一些老的代碼里面可能還會看到DTD,但是隨著xsd支持數據類型,所以現在看到的基本都是xsd了。

? ? XML Schema 語言是用來定義xml結構的。簡稱xsd(XML Schema Definition)

? ? 如下圖,這是一個默認的spring Bean的XML配置文件的標頭:

xmlns:意為XML 命名空間,用于定義一套xml標簽的規范。這個屬性用于定義這個 XML 文檔的默認命名空間,在這個示例中告訴解析器這個 XML 文件中的元素(如<bean>)是http://www.springframework.org/schema/beans這個命名空間下定義的。

xmlns:xsi:用于引入XML 模式實例命名空間(也就是XML Schema Instance)。這個命名空間提供了一些用于驗證 XML 文檔結構的屬性。

xsi:;schemaLocation:指定 XML 文檔所遵循的 XML Schema 的位置。這個屬性通常會有一對的值,用來指定xmlns屬性定義的文件的位置。看著像一個網址,實際可能映射的是本地的某個jar包里面的xsd文件。而且寫法上,先寫命名空間,再寫xsd地址。

? ??

總結一下引入schema文件的具體步驟:

1、查看schema文檔,找到根元素,在xml中寫出來

2、根元素來自哪個命名空間。使用xmlns指令來聲明(命名空間的作用:它指的是一個環境,所用的標簽來自于哪個環境定義的)

3、聲明引入的名稱空間跟哪個xsd文件對應

4、聲明schemaLocation哪里來的,一般都是某個標準(寫法上都是先寫命名空間+具體文件的位置,成對)

? ? 除此之外,在spring里面還有7大模塊,每個模塊也有它們自己的對應標簽。

? ? ?例如context組件,在使用注解和配置類來平替bean.xml配置文件的時候,我們就需要使用到context文件的標簽。詳細的可以去看我的另一篇文章:

<beans>標簽配置多環境

? ? 在實際開發中,我們往往會有很多環境。比如編寫代碼一個環境,測試一個環境,運維又是一個環境,每個環境可能都會有自己特定的某個東西。為了便于這些環境分開,在spring的XML配置環境里面,我們可以使用<beans>來給特定的環境配置其所需要的環境。

? ? 這里邊示范邊講解,我們編寫配置文件:

? ? 其中,在配置文件的根標簽下可以繼續使用<beans>,并不是說<beans>只作為根標簽。在用來配置環境的Bean的<beans>標簽,還需要通過屬性profile來給這個<beans>的內容啟用的環境命名。?相關的User類和AServer類大家自己定義即可,里面沒什么東西。

? ? 然后是測試類運行:

? ? 其中,使用System.setProperty();來啟用我們的spring配置文件的相關環境,而且我們的代碼運行中,多次啟用了不同的環境,那么只會生效我們最新啟用的那個環境

? ? 這里兩個環境都有aServer,但是text環境中的aServer里面給屬性name賦值為李四,dev賦值為張三。

? ? 另外還需要注意,我們更改環境后,我們的容器還要重新加載一下進行更新,因為這個容器是根據調用對象的環境,返回對應的Bean配置,而其他不符合環境的Bean配置不會給到調用對象。

? ? 我們看斷點的變量池,這是第一個斷點處的內容,也就是開發環境下的Bean對象:

? ? 這是第二斷點處的內容:

? ?

? ? ?當然,把多個環境的配置全部寫在一個配置文件里面,會顯得很亂,所以多環境還常搭配<import>標簽使用。

<import>引入其他資源配置文件

? ? 我們編寫兩個bean的配置文件:

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

? ? 測試類:

? ? ?運行結果:

? ? ?前面我們講到了多環境常搭配<import>,也就是在這里。我們在主配置文件里面,不再直接在配置多環境的<beans>標簽下編寫內容,而是把內容編寫到另一個單獨的配置文件里面,然后在主配置文件下面的多環境使用<import>導入它。

引入自定義標簽

? ? 這個自定義,不只是在說我們自己個人定義的。實際應用中,是指spring整合其他框架時,其他框架有提供自己相關XML配置的標簽,我們可以將其引入來使用。

? ? 在我的另一篇文章里講到了springContext標簽的引入,但是那是spring自己的模塊,如果我們要引入其他框架,就不像那里面演示的改幾個單詞就可以了。

? ? 在這里我以導入dubbo為例,分享一下我的個人經驗:

? ? 首先,我們要導入dubbo的jar包,然后在我們的Bean配置文件的表頭中引入相關標簽。

? ? 引入相關標簽的操作和spring一樣,關鍵在于導入dubbo的schema。但是我們要怎么寫呢?任何官方通常都會給出相關說明文檔,所以我們去到dubbo的官網查找。

? ? 進入到官網之后,我們直接ctrl+F,打開頁面關鍵詞搜索,輸入 "Schema":

? ? 搜索出結果,上來就是我們要找的導入過程。?

? ? 這里注意我們要添加的只有 xmlns:dubbo一行,以及xsi:schemaLocation中關于dubbo的xsd的成對映射。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/63586.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/63586.shtml
英文地址,請注明出處:http://en.pswp.cn/web/63586.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

簡單的bytebuddy學習筆記

簡單的bytebuddy學習筆記 此筆記對應b站bytebuddy學習視頻進行整理&#xff0c;此為視頻地址&#xff0c;此處為具體的練習代碼地址 一、簡介 ByteBuddy是基于ASM (ow2.io)實現的字節碼操作類庫。比起ASM&#xff0c;ByteBuddy的API更加簡單易用。開發者無需了解class file …

【信息系統項目管理師】高分論文:論信息系統項目的進度管理(人力資源管理系統)

更多內容請見: 備考信息系統項目管理師-專欄介紹和目錄 文章目錄 論文1、規劃進度管理3、排列活動順序4、估算活動持續時間5、制訂進度計劃6、控制進度論文 2022年2月,我作為項目經理參與了XX電網公司人力資源管理系統建設項目,該項目是2022年XX電網公司“十三五”信息化規…

vue3項目結合Echarts實現甘特圖(可拖拽、選中等操作)

效果圖&#xff1a; 圖一&#xff1a;選中操作 圖二&#xff1a;上下左右拖拽操作 本案例在echarts???????示例機場航班甘特圖的基礎上修改??????? 封裝ganttEcharts組件&#xff0c;測試數據 airport-schedule.jsonganttEcharts代碼: 直接復制粘貼可測????…

GIT安裝過程

文章目錄 ?下載安裝包?安裝過程?驗證安裝?Git的基本使用? ?Git的安裝可以通過以下步驟完成? ?下載安裝包? 首先&#xff0c;訪問Git官網(https://git-scm.com/)或Git for Windows(https://gitforwindows.org/)下載對應系統的安裝包。 對于Windows系統&#xff0c;通常…

Java 技術面試常見問題解析

1.說說Mybatis的緩存機制: MyBatis 是一個優秀的持久層框架&#xff0c;它簡化了企業應用開發中數據庫操作的代碼。MyBatis 提供了一級緩存和二級緩存機制來優化對數據庫的訪問。 一級緩存 (SqlSession級別的緩存) 一級緩存是 MyBatis 中默認開啟且無法關閉的緩存機制。它存…

Word使用分隔符實現頁面部分分欄

文章目錄 Word使用分隔符實現頁面部分分欄分隔符使用頁面設置 Word使用分隔符實現頁面部分分欄 分隔符使用 word中的分隔符&#xff1a; 前面不分欄&#xff0c;后面分欄(或前面分欄&#xff0c;后面不分欄)&#xff0c;只需要在分隔位置處插入分隔符&#xff1a;“連續”即…

掌握 Spring Boot 中的 WebClient:何時以及為何使用它而不是 RestTemplate

在開發 Spring Boot 應用程序時&#xff0c;與 RESTful Web 服務進行通信是一項常見需求。從歷史上看&#xff0c;開發人員已將RestTemplate用于此目的。然而&#xff0c;隨著反應式編程的出現和對更高效資源利用的需求&#xff0c;WebClient已成為首選。本文探討了RestTemplat…

主曲率為常數時曲面分類

主曲率為常數 ? K , H \Leftrightarrow K,H ?K,H 為常數&#xff0c;曲面分類&#xff1a; 1.若 k 1 k 2 0 k_1k_20 k1?k2?0,則 S S S為全臍點曲面——平面的一部分&#xff1b; 2.若 k 1 k 2 ≠ 0 k_1k_2\neq0 k1?k2?0,則 S S S為全臍點曲面——球面的一部分&…

asp.net core發布配置端口號,支持linux

方式一&#xff0c;修改配置文件 appsettings.json 找到文件 appsettings.json&#xff0c; 添加如下節點配置&#xff0c;在linux環境需要設置0.0.0.0才可以正常代表本機&#xff0c;然后被其他機器訪問&#xff0c;此處設置端口8000&#xff0c; "Kestrel": {&quo…

【安當產品應用案例100集】033-安當TDE透明加密在移動存儲加密中的應用案例

背景介紹 隨著移動互聯網的普及&#xff0c;企業和個人越來越依賴移動存儲設備&#xff0c;如U盤、移動硬盤以及云存儲服務進行數據的存儲和傳輸。然而&#xff0c;這種便捷性也帶來了數據安全的隱患。如何確保存儲在移動設備上的數據不被非法訪問和泄露&#xff0c;成為企業和…

【linux 內存】cat /proc/meminfo、free

cat /proc/meminfo 各字段詳解 /proc/meminfo是了解Linux系統內存使用狀況的主要接口&#xff0c;我們最常用的”free”、”vmstat”等命令就是通過它獲取數據的 &#xff0c;/proc/meminfo所包含的信息比”free”等命令要豐富得多&#xff0c;因此需要了解這些字段的含義。 …

Android HandlerThread、Looper、MessageQueue 源碼分析

Android HandlerThread、Looper、MessageQueue 源碼分析 簡介 在 Android 開發中&#xff0c;大家應該對 HandlerThread 有一定了解。顧名思義&#xff0c;HandlerThread 是 Thread 的一個子類。與普通的 Thread 不同&#xff0c;Thread 通常一次只能執行一個后臺任務&#x…

配置PostgreSQL用于集成測試的步驟

在進行軟件開發時&#xff0c;集成測試是確保各個組件能夠協同工作的關鍵環節。PostgreSQL作為一種強大的開源數據庫系統&#xff0c;常被用于集成測試中。下面將詳細介紹如何在不同的環境中配置PostgreSQL以支持集成測試。 1. 選擇并安裝PostgreSQL 首先&#xff0c;你需要根…

WebRTC搭建與應用(一)-ICE服務搭建

WebRTC搭建與應用(一) 近期由于項目需要在研究前端WebGL渲染轉為云渲染&#xff0c;借此機會對WebRTC、ICE信令協議等有了初步了解&#xff0c;在此記錄一下&#xff0c;以防遺忘。 第一章 ICE服務搭建 文章目錄 WebRTC搭建與應用(一)前言一、ICE是什么&#xff1f;二、什么…

【學習筆記】深入淺出詳解Pytorch中的View, reshape, unfold,flatten等方法。

文章目錄 一、寫在前面二、Reshape&#xff08;一&#xff09;用法&#xff08;二&#xff09;代碼展示 三、Unfold&#xff08;一&#xff09;torch.unfold 的基本概念&#xff08;二&#xff09;torch.unfold 的工作原理&#xff08;三&#xff09; 示例代碼&#xff08;四&a…

深入理解 MySQL 索引

引言 在數據庫管理中&#xff0c;索引&#xff08;Index&#xff09;是提高查詢性能的關鍵技術之一。MySQL 是最流行的關系型數據庫管理系統之一&#xff0c;廣泛應用于各種規模的應用程序中。本文將深入探討 MySQL 中的索引概念、類型、工作原理以及最佳實踐&#xff0c;幫助…

利用notepad++刪除特定關鍵字所在的行

1、按組合鍵Ctrl H&#xff0c;查找模式選擇 ‘正則表達式’&#xff0c;不選 ‘.匹配新行’ 2、查找目標輸入 &#xff1a; ^.*關鍵字.*\r\n (不保留空行) ^.*關鍵字.*$ (保留空行)3、替換為&#xff1a;&#xff08;空&#xff09; 配置界面參考下圖&#xff1a; ??…

docker安裝和換源

安裝&#xff1a; https://www.runoob.com/docker/ubuntu-docker-install.html sudo apt-get remove docker docker-engine docker.io containerd runcsudo apt-get install \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-commoncurl -fsS…

CSSmodule的作用是什么

CSS Modules的作用主要體現在以下幾個方面&#xff1a; 1. 解決全局樣式污染問題 在傳統的CSS管理方式中&#xff0c;樣式定義通常是全局的&#xff0c;這很容易導致全局樣式污染。當多個組件或頁面共享同一個樣式時&#xff0c;可能會出現樣式沖突和覆蓋的情況&#xff0c;從…

創建第一個QML項目

文章目錄 使用 Qt Creator 創建 Qt Quick 項目詳解為什么選擇 Qt Creator&#xff1f;1. 打開 Qt Creator2. 選擇項目模板3. 設置項目名稱與路徑4. 定義項目細節5. 配置構建套件6. 檢查項目配置7. 編譯并運行項目后續操作修改界面添加功能 總結 使用 Qt Creator 創建 Qt Quick …