spring為自定義xml標籤載入提供了擴充套件。使用者可自定義標籤並註冊到spring的bean容器中。實現較為複雜的bean載入解析。我們認為 xml schema 很快會在大部分網路應用程式中取代 dtd。理由如下:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<
xsd:schema
xmlns
=""xmlns:xsd
=""targetnamespace
=""elementformdefault
="qualified"
>
<
xsd:element
name
="testbean"
>
<
xsd:complextype
>
<
xsd:attribute
name
="id"
type
="xsd:string"
use="required"
form
="unqualified"
/>
<
xsd:attribute
name
="name"
type
="xsd:string"
use="required"
form
="unqualified"
/>
<
xsd:attribute
name
="age"
type
="xsd:integer"
use="required"
form
="unqualified"
/>
xsd:complextype
>
xsd:element
>
xsd:schema
>
xmlns
:預設命名空間,類似import
targetnamespace
:定義檔案內標籤所屬命名空間,類似package
elementformdefault
:在xml文件中使用區域性元素時,必須使用限定短名作為字首
spring解析xml檔案時,需要根據節點所在命名空間對應的處理器來解析。spring預設從resources/meta-inf/spring.handlers檔案獲取對映關係。使用者也可自定義對映檔案路徑。
spring.handlers
http\:
繼承namespacehandlersupport類,在init()方法中註冊自定義標籤的解析器,如testbean標籤使用testbeandefinitionparser進行解析。
testbeandefinitionparser實現beandefinitionparser介面,在**parse()**方法中新增自定**析規則,並註冊beandefinition
public
class
customnamespacehandler
extends
namespacehandlersupport
private
static
class
testbeandefinitionparser
implements
beandefinitionparser
}}
xml檔案xsi:schemalocation定義了命名空間對應的xsd路徑,當改路徑為http文件時,避免因網路問題導致載入失敗,我們可在本地定義namespace和xsd的對映關係。spring預設從resources/meta-inf/spring.schemas檔案獲取對映關係。使用者也可自定義對映檔案路徑。
xmlns
=""xmlns:xsi
="-instance"
xmlns:test
=""xsi:schemalocation
=" /spring-beans-2.0.xsd
"default-lazy-init
="true"
>
<
test:testbeanid=
"testbean"
name
="fengpingyu"
age="28"
/>
beans
>
將
對映到本地檔案
/** * 自定義schemas路徑解析器
* 預設從meta-inf/spring.schemas檔案讀取,讀取不到時就自定義路徑讀取
*/private
final
class
dummyschemaresolver
extends
pluggableschemaresolver
@override
public inputsource resolveentity
(string publicid, string systemid)
throws ioexception
return source;}}
}
spring自定義標籤
如何將自定義的配置標籤化是個比較通用的問題,spring已經很好的幫我們設計完成,只需要我們去實現。將繁瑣的配置通過xml配置,spring自動轉換成bean,整個過程比較合理。1.建立乙個需要擴充套件的元件 package com.bean public class user public voi...
Spring的自定義標籤
在com.test.beans下建立user類 package com.test.beans public class user public user string username,string email public string getusername public void setuse...
spring 自定義標籤實現
參考資料 dubbo對spring自定義標籤的擴充套件的實現 spring官方文件 42.1中,介紹了如何自定義spring標籤,步驟如下 1 編寫乙個xml schema描述您的自定義元素 2 編寫自定義命名空間處理程式實現,實現namespackhandler介面 3 編寫乙個或多個自定義的be...