spring 自定義標籤實現

2021-08-29 07:25:12 字數 2977 閱讀 7729

參考資料:

dubbo對spring自定義標籤的擴充套件的實現:

spring官方文件 42.1中,介紹了如何自定義spring標籤,步驟如下:

1、編寫乙個xml schema描述您的自定義元素

2、編寫自定義命名空間處理程式實現,實現namespackhandler介面

3、編寫乙個或多個自定義的bean定**析器,實現beandefinitionparser介面

4、註冊到spring容器

ps:官方文件描述出處,開啟 ,搜尋42.1即可

1、編寫yf.xsd,名稱根據自己的喜好來寫即可

complexcontent 該複雜型別只包含元素或不包含任何元素內容(空)

attribute 該複雜型別包含指定的屬性。

annotation和documentation,結合起來,對定義的內容,做一定的文字說明

<

xsd:annotation

>

<

xsd:documentation

>

xsd:documentation

>

xsd:annotation

>

1)定義乙個type

<

xsd:complextype

name

=>

<

xsd:attribute

name

="id"

type

="xsd:id"

>

<

xsd:annotation

>

<

xsd:documentation

>

xsd:documentation

>

xsd:annotation

>

xsd:attribute

>

xsd:complextype

>

2)定義標籤,並指定其引用哪個type,擷取部分示例如下

<

xsd:element

name

= type

=>

<

xsd:annotation

>

<

xsd:documentation

>

xsd:documentation

>

xsd:annotation

>

xsd:element

>

public

class

yfnamespacehandler

extends

namespacehandlersupport

}

spring.handlers指定namespacehandler,內容如下:

.xsd完整內容如下:

<?xml version="1.0" encoding="utf-8"?>

xmlns

=""xmlns:xsi

=""xmlns:c

=""xmlns:context

="ontext"

xmlns:lang

=""xmlns:util

=""xmlns:yf

=""xsi:schemalocation

=" /spring-beans.xsd

ontext ontext/spring-context-3.2.xsd

/spring-lang-3.2.xsd

/spring-util-3.2.xsd

.xsd"

>

name

="yfnametest"

version

="1.0"

/>

<

yf:registryid=

"yfregistry"

address

="127.0.0.1"

port

="8080"

/>

beans

>

2)編寫測試類

public

class

yftagtest

}

3)執行測試類,結果如下,表明自定義標籤測試成功。

23:34:29.734 [main] debug org.springframework.beans.factory.support.defaultlistablebeanfactory - returning cached instance of singleton bean 'lifecycleprocessor'

23:34:29.743 [main] debug org.springframework.core.env.propertysourcespropertyresolver - could not find key 'spring.livebeansview.mbeandomain' in any property source

23:34:29.753 [main] debug org.springframework.beans.factory.support.defaultlistablebeanfactory - returning cached instance of singleton bean 'yfregistry'

registry

process finished with exit code 0

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的自定義標籤

spring為自定義xml標籤載入提供了擴充套件。使用者可自定義標籤並註冊到spring的bean容器中。實現較為複雜的bean載入解析。我們認為 xml schema 很快會在大部分網路應用程式中取代 dtd。理由如下 xsd schema xmlns xmlns xsd targetnamesp...