說說在 Spring 中如何基於 XML 進行配置

2021-08-19 13:15:17 字數 3232 閱讀 3453

對於基於 xml 的配置, spring 1.0 採用的是 dtd格式。而在 spring 2.0 以後使用的是 schema 格式,這使得不同型別的配置擁有了自己的命名空間,這讓配置更具擴充套件性 。

schema 在文件根節點通過 xmlns 來宣告所需要的命名空間。在上面的示例中,我們定義了三類命名空間:

命名空間的定義分為兩步:

1. 指定命名空間的名稱。

2. 指定命名空間的 schema 文件樣式檔案的位置,用空格或回車換行進行分隔 。

在第一步中,需要指定命名空間的縮略名與別名,比如:

xmlns:aop=""
這裡的aop是別名,一般是簡潔易記的名稱,文件後面的元素通過命名空間的別名加以區分。是命名空間的全限定名,習慣上使用文件發布機構的**加目錄名作為全限定名。

如果沒有指定命名空間的別名,則表示使用文件預設的命名空間。

第二步,我們為每乙個命名空間指定對應的 schema 文件格式的定義檔案,語法如下:

《命名空間 1>《分隔符》《命名空間 1 schema url 位址》《命名空間 2>《分隔符》《命名空間 2 schema url 位址》 ...
命名空間的 schema 檔案位址有這些用途:

1. xml 解析器可以對 schema 檔案進行格式合法性驗證。

2. 在開發環境下,ide 會引用 schema 檔案,在**編輯器中提供自動補全功能。ide 會首先從本地類路徑中查詢 schema 檔案,如果不存在,才會從遠端載入。

spring 4.0 配置的 schema 檔案放置在各模組 jar 檔案中的乙個名為 config 的目錄下。

下面對這些 schema 檔案的用途,進行簡要說明:

schema 檔案

說明命名空間

schema url

spring-beans-4.0.xsd

配置 bean

/spring-beans-4.0.xsd

spring-aop-4.0.xsd

配置 aop

/spring-aop-4.0.xsd

spring-tx-4.0.xsd

配置宣告式事務

/spring-tx-4.0.xsd

spring-mvc-4.0.xsd

配置 mvc(spring 3.0 新增)

/spring-mvc-4.0.xsd

spring-util-4.0.xsd

用於簡化配置

/spring-util-4.0.xsd

spring-jee-4.0.xsd

用於簡化 ejb、jndi 等配置

/spring-jee-4.0.xsd

spring-jdbc-4.0.xsd

用於配置 spring 內嵌資料庫(spring 3.0 新增)

/spring-jdbc-4.0.xsd

spring-jms-4.0.xsd

用於配置 jms

/spring-jms-4.0.xsd

spring-lang-4.0.xsd

用於整合 jruby 與 groovy 等動態語言

/spring-lang-4.0.xsd

spring-oxm-4.0.xsd

用於配置物件 xml 對映

/spring-oxm-4.0.xsd

spring-task-4.0.xsd

用於配置任務排程

/spring-task-4.0.xsd

spring-tool-4.0.xsd

用於整合 spring 工具

/spring-tool-4.0.xsd

假設有這樣的乙個 bean 配置:

class="net.deniro.spring4.ioc.people"/>

spring ioc 容器中的乙個 bean 對應於配置檔案中的乙個

* id:bean 的名稱,可以通過容器的 getbean(id) 獲得這個 bean, 它起到定位查詢的作用。

* class:bean 對應的實現類。

id 屬性在 ioc 容器中必須是唯一的,而且 id 的命名要滿足 xml 對 id 屬性命名規範:必須以字母開頭,後面可以是字母 、數字 、連字元 、下劃線 、句號 、冒號等完整結束符號,逗號與空格等非完整結束符號是非法的。

id 和 name 都可以指定多個名字,名字之間可用逗號、分號或空格進行分隔:

class="net.deniro.spring4.ioc.people"/>

不允許出現多個具有相同 id 的,但允許出現多個具有相同 name 的,通過 getbean(beanname) 獲取 bean 時,將返回最後宣告的 bean,因為它覆蓋了前面同名的 bean。

為了避免出現 bean 被覆蓋的問題,建議盡量使用 id 來命名 bean。

如果 id 與 name 都未指定,那麼 spring 把全限定類名作為這個 bean 的名稱。如果存在多個實現類相同的匿名,形如:

class="net.deniro.spring4.ioc.people"/>

class="net.deniro.spring4.ioc.people"/>

那麼,第乙個 bean 使用getbean("net.deniro.spring4.ioc.people")獲取;第二個bean 使用getbean("net.deniro.spring4.ioc.people#1")獲取,以此類推。

說說在 Canvas 中如何新增陰影

canvas 的 context 中有四個引數可以用於設定陰影相關屬性。方法名說明 shadowoffsetx 陰影 x 軸偏移量。可以為正值或負值 負值表示在左側和上方建立陰影,正值表示在底部和右側建立陰影。shadowoffsety 陰影 y 軸偏移量。其它特性與陰影 x 軸偏移量相同。shad...

說說在 Python 中如何使用列表推導

luciano ramalho 舉了這樣乙個示例,把乙個字串轉為 unicode 碼的列表。傳統寫法是這樣的 symbols codes for symbol in symbols 執行結果 info codes 64,35,36,37,94,38 ord 函式是 chr 函式 對於8位的ascii...

在Spring中如何建立物件?

1.通過構造方法建立 1.1無參構造建立 預設情況。1.2有參構造建立 需要明確配置 構造方法過載時預設載入同參的最後乙個構造方法 1.2.1需要在類中提供有參構造方法。1.2.2.1如果設定的條件匹配多個構造方法,預設使用最後乙個構造方法。1.2.2.2 index 引數的索引,從 0 開始 1....