spring開放式擴充套件的理解

2021-08-21 06:01:33 字數 2803 閱讀 3071

來梳理自己對spring擴充套件的簡單理解.

從大的方面來看,我們可以擴充套件spring來讓我們自己開發的框架融入她的體系中.小的方面,我們可以利用她開放的各種功能介面來自定義一些功能替代spring的預設值.我就從這倆方面來舉幾個例子來講下spring擴充套件的特點.

那現在比如我們自己搗鼓了乙個框架,想把她給用起來.然後發現,呀.我們很多系統都是基於spring做的,那麼我們自己搞的框架相容到spring裡面啊.放不到spring裡面,那我們不是白做了這麼牛鼻哄哄的框架了嘛.

這裡spring的那些專家或許也考慮過,我們開發的spring這麼牛鼻,怎麼讓人家把自家的框架都相容咱家的spring啊.哈哈,於是我們就看見現在的mybatis-spring,spring-data-redis等,她們都是通過spring自定義schemas實現的,也就是說只要你按照spring要求的做,保證你在spring的懷裡舒舒服服的.

那我們怎麼做了.首先,我們知道spring本質是乙個bean容器.而bean就是spring定義的乙個實體類beandefinition.所以,我們要做的就是把我們自定義框架的東西轉化為spring裡面的乙個或多個bean.那想想我們平常是怎麼做的?我們是不是要在xml裡面各種的寫出來,那同理,現在我們要做的也就是做乙個xml讓spring來把裡面的內容解析成bean.

spring需要我們自定義三個檔案,乙個spring.handlers,乙個spring.schemas.

,還有乙個example.xsd(這個名字隨意).我們看看這都寫了啥.

xsd:schema>我們自己先看一下,這三檔案有啥關係,spring.handlers好像定義了乙個叫mynamespacehandler類的路徑.spring.schemas定義了example.xsd的路徑.而example.xsd是啥了?她就是我們要拜託spring去解析的xml,大意我想都能看出去定義乙個叫user的標籤,她有個屬性叫name.不過我們還看到xml上面有個

xmlns:tns="http:.com/schema/example"這個也是前面倆檔案等號左邊的東西,是不是像我們每次在使用springxml的時候都要複製貼上的一大段頭部**.

"" 

xmlns:xsi="-instance"

xmlns:context=""

xmlns:aop=""

xsi:schemalocation="

/spring-beans-3.0.xsd

/spring-context-3.0.xsd

/spring-aop-3.0.xsd

">

其實和我們的意圖一樣,也是告訴spring所需要的bean都在哪些xml裡面.哈哈,是不是很有趣,我們也加了個www上去,nice.

好了,然後我們去看看自定義的mynamespacehandler

public

class

mynamespacehandler

extends

namespacehandlersupport

});}

}

public

class

messageevent

extends

public

messageevent(object msg)

} @override

public

void

if (event instanceof messageevent)

}}

**一目了然,獲取到messageevent事件,然後處理事件中包含的訊息.然後我們在具體的**裡面怎麼做了.

@autowired

public

void

register()

resolvabletype type = (eventtype != null ? eventtype : resolvedefaulteventtype(event));

executor executor = gettaskexecutor();

if (executor != null)

});}

else

}

這裡獲取所有的***,然後判斷是否定義了非同步執行緒池,如果有,則放入執行緒池,這裡推薦使用執行緒池非同步呼叫,可以防止意外錯誤的發生影響主業務的進行.之後通過invokelistener一步步到最後的呼叫**是

開放式式商業模式 開放式交流中的3課

開放式式商業模式 您可能認為您無法從我要說的東西中學到任何東西,因為您是乙個很好的溝通者,對嗎?我的意思是,您在linkedin上的個人資料甚至可能提到您的出色溝通能力。但是,如果那是您在無處不在的移動裝置和社交 之前寫的東西,那麼您可能想重新考慮一下,好的溝通者真正意味著什麼。我們都知道時代已經改...

開放式研究安全課題

專題一 安全協議理論與技術研究 01 01 身份認證和金鑰分配 01 02 不可否認協議 01 03 電子商務協議 01 04 協議的形式化分析與輔助設計技術 專題二 資訊對抗理論與技術研究 02 01 系統安全性評估與系統隱患檢測 02 02 檢測和響應技術 02 03 虛擬專用網 技術 02 0...

開放式Android聯盟成立

除了作業系統和一些開源的元件,android的預設的安裝程式包括一些google的專有的應用程式,像gmail,youtube和googlemap,這些都不是開源的,同樣的,不包括android開放 庫。只要定製的roms不包括閉源的應用程式,google歡迎開發者 定製的android 這個開放式...