Spring的自定義標籤

2021-09-05 11:39:58 字數 2967 閱讀 5133

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...