dubbo是如何“插入”到spring框架中的
原文鏈接:http://blog.csdn.net/achilles12345/article/details/41789527
----------------------------------------------------------------------------------------------
? 作為一個分布式服務(wù)治理框架,dubbo做的非常好,在業(yè)界使用很廣,所以最近研究了下這個框架。任何框架要研究其原理最好的辦法之一就是沿著其運行流程進行追蹤,這樣就能從上到下,從粗到細對一個系統(tǒng)進行了解。今天,我們要說明的問題就是dubbo如何啟動的。
? ? ? ? dubbo是基于Spring進行開發(fā)的,而且擴展了Spring的XML schema和注解標(biāo)簽,其實這里也就是整個dubbo的切入點。dubbo除去依賴其他的第三方框架外,整個框架只有一個jar包,可謂是精致。在這個jar包的NET-INF目錄下有兩個文件:spring.handlers和spring.schemas。其中spring.schemas中定義的就是擴展的spring配置標(biāo)簽,而且spring.handlers中定義的就是這些schema的處理類,就是這個類將dubbo組件“插入”到spring這個平臺里的。(關(guān)于如何自定義spring配置的schema,網(wǎng)上資料很多,這里只簡單概括)Spring在啟動的時候會掃描MET-INF下所有的spring.handlers等文件,找到其中的標(biāo)簽處理類,并運行其init方法。
? ? ? ? 這里要插個知識點“spring的啟動過程”。spring啟動過程,從宏觀角度來講分為兩個階段。第一個階段完成spring配置文件的解析,或者spring注解的解析最終將這些配置或者注解解析成BeanDefinition對象,然后進入下一個階段,比如我們經(jīng)常在spring配置文件中使用的占位符替換工作就是在這個階段完成的。在第二個階段中,spring用之前解析好的BeanDefinition對象來完成bean的初始化和組裝工作,比如我們使用spring事務(wù)時的事務(wù)proxy就是這個階段完成注入到service對象中的。
? 在這個init方法中,dubbo將自己的標(biāo)簽(application,module,registry,monitor,provider,consumer,protocol,service,reference)處理類注冊到spring中,而這些類會完成對自己所負責(zé)的標(biāo)簽的解析工作,將標(biāo)簽最終轉(zhuǎn)換為bean的描述對象BeanDefinition并返回給spring,而spring拿到這些標(biāo)簽對象完成bean的初始化、依賴注入(比如注入對RMI端的proxy對象)。
這就是dubbo的宏觀啟動流程,這個對于理解dubbo框架的原理能起到促進作用,網(wǎng)上也沒有明確的文章進行說明,這里做個補充。希望能幫大家解決一些問題。
總結(jié)
以上是生活随笔為你收集整理的dubbo是如何“插入”到spring框架中的的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android中scrollview与w
- 下一篇: JDBC实现从Hive抽取数据导入Ora