基於Spring開發 自定義標籤及其解析

2021-10-08 13:23:13 字數 3373 閱讀 6453

基於spring開發——自定義標籤及其解析

​ 在spring中使用過dubbo的人應該都配置過類似

="com.alibaba.dubbo.demo.demoservice" ref=

"demoservice"

/>

"demoservice"

inte***ce

="com.alibaba.dubbo.demo.demoservice"

/>

​ 在spring官方文件中42.1點介紹中有詳細說明怎麼自定義標籤,簡單的來說自定義標籤就是:

編寫乙個xml架構來描述自定義的元素

編寫乙個自定義的handler實現namespacehandler介面

編寫乙個或者多個自定義的解析器實現beandefinitionparser介面

註冊到spring容器

​ 自定義標籤可以說是spring提供的最大、最強的hook(鉤子),通俗的講就是給後續小夥伴開發元件,提供乙個標準公共可拔插」介面」,大家可以理解為手機充電器的工業標準口,為了方便各個充電器生產廠家生產,而制定的標準。

根據需要編寫xsd檔案。

編寫標籤對應的實體類。(乙個標籤對應乙個實體類)

編寫標籤的解析類。(乙個標籤對應乙個解析類)

編寫命名空間處理類,(spring的namespacehandler)這裡我們的是ttdubbonamespacehandler

編寫spring.handlers和spring.schemas串聯起所有部件,(spring.handlers和spring.schemas都放在「meta-inf」資料夾下)

基本自定義標籤需要實現兩個關鍵介面:namespacehandlersupport,beandefinitionparserspring.handlers檔案作用:具體處理命名空間的handle

key:是你的命名空間,其他xml中通過引入這個命名空間進行使用該元素描述物件

value:指向的是你的handle

**spring.schemas檔案作用:**具體處理命名空間的約束

把具體的約束檔案指向本地的meta-inf/ttdubbo.xsd,因為好像約束檔案預設好像去網上搜尋。

實現乙個ttdubbo

******type,complextype, ******content和complexcontent標籤

<

xsd:element

name

="description"

type

="xsd:string"

/>

// 規定乙個元素純文字內容的型別

<

xsd:element

name

="worker"

>

<

xsd:complextype

>

<

xsd:attribute

name

="id"

type

="idtype"

/>

xsd:complextype

>

xsd:element

>

<

xsd:******type

name

="idtype"

>

<

xsd:restriction

base

="xsd:integer"

/>

xsd:******type

>

<

xsd:element

name

="student"

>

<

xsd:complextype

>

<

xsd:sequence

>

<

xsd:element

name

="id"

type

="xsd:int"

>

xsd:element

>

<

xsd:element

name

="name"

type

="xsd:string"

>

xsd:element

>

<

xsd:element

name

="gender"

type

="xsd:string"

>

xsd:element

>

<

xsd:element

name

="addr"

type

="xsd:string"

>

xsd:element

>

xsd:sequence

>

<

xsd:attribute

name

="class"

type

="xsd:string"

/>

xsd:complextype

>

xsd:element

>

我們經常說的spring容器到底指什麼,以及如何儲存我們配置bean屬性?我們解析出配置問檔案用哪個物件來接收儲存?

我們知道在抽象物件世界裡everything is object.所以我們將bean抽象成了物件,它的頂層介面就是beandefinition,而子類包括了childbeandefinition,rootbeandefinition ,genericbeandefinition,預設檔案解析入map為genericbeandefinition.

spring基礎標籤有哪些?

import, alias, bean, beans

spring配置檔案的解析入口在哪?

這裡介紹兩個重要的介面及其實現類

beandefinitionreaderbeandefinitiondocumentreader

對應實現類xmlbeandefinitionreaderdefaultbeandefinitiondocumentreader

自定義標籤的解析過程

! (

開發自定義控制項

學習自定義控制項的開發不僅可以使你開發出更靈活的系統更重要的是它可以使你加深對已有伺服器控制項的理解,得以更靈活的應用。先說一下伺服器控制項的概念吧 所謂伺服器控制項,就是在伺服器上執行,並可以對映到所有瀏覽器支援的標準 html 標記的控制項,在你的web窗體中,凡是包含 runat server...

開發自定義View

view元件就類似於乙個矩形空白區域,剛開始它裡面什麼都沒有,對於android應用的其他ui元件來說,他們都繼承了view元件,然後在view元件的空白區域上繪製外觀.基於這個原理,開發者可以開發出專案定製的元件,當android系統提供的ui不能滿足開發需求時,可以自定義類去繼承view類或者v...

spring自定義標籤

如何將自定義的配置標籤化是個比較通用的問題,spring已經很好的幫我們設計完成,只需要我們去實現。將繁瑣的配置通過xml配置,spring自動轉換成bean,整個過程比較合理。1.建立乙個需要擴充套件的元件 package com.bean public class user public voi...