功能
讀取config.xml,轉(zhuǎn)成對應(yīng)的javabean
實現(xiàn)
1、找到文件
2、讀取文件
3、替換變量
4、使用JAXB讀取xml內(nèi)容
類圖
由于此處設(shè)計代碼較多,而且處理方式非常通用、也較簡單,所以不列舉大篇代碼,畫出uml圖講清關(guān)系即可,由于HiveMQ都是采用interface impl的形式太多uml就看不清楚了,為了簡單起見,部分接口實現(xiàn)就暫時不出現(xiàn)在類圖賞。
初看這樣的uml圖保證所有人都是一臉懵逼,沒關(guān)系,且聽我一一道來。
1、由上一篇我們可以知道config讀取是在main方法中就通過HiveMQConfigurationServiceFactory的靜態(tài)方法create創(chuàng)建。
2、請記住config.xml里面的配置,其實config.xml的根就是HiveMQConfigurationService,他持有了
GeneralConfigurationService
ListenerConfigurationService
MqttConfigurationService
InternalConfigurationService
ThrottlingConfigurationService
PersistenceConfigurationService
SharedSubscriptionsConfigurationService
RestConfigurationService
ClusterConfigurationService
這些接口定義在hivemq spi上都可以看到其源碼,有興趣的朋友可以自行查看。
3、ConfigFile說白了就是config.xml的File的一個holder。
4、HiveMQConfigurationServiceFactory通過,ConfigurationReader來進行對config.xml進行讀取,并給上述的那么多service進行初始化賦值。
5、ConfigurationReader通過EnvironmentVariableReplacer把環(huán)境變量替換到config.xml中的占位符中,具體的占位符語法情參照hivemq官網(wǎng)的文檔。
6、那么通過上述流程就讀取出了對應(yīng)的配置,同時通過spi的形式將上述一堆service提供給Plugin使用。