spring集成配置解析java
本文轉自「天河聊技術」微信公衆號spring
找到spring的handler這個類微信
上圖中是對sharding-jdbc的三個標籤的解析,咱們此次主要分析分片配置的解析,讀寫分離的配置解析也是同樣的邏輯架構
咱們看到上圖中的init的方法第一行是對分片策略的解析,進入到初始化的這個類中大數據
進入到上圖中的業務方法,根據傳進來的xml節點對象,也就是strategy的xml節點對象進行下一步解析xml
咱們跟蹤上圖的第一行代碼的rootBeanDefinition方法進去發現這個方法對象
factoryMethodName這個屬性值賦值爲null,接着在進入到下個方法內element
spring初始化bean有兩種方法,一種是工廠方法模式、一種就是直接調用無參構造器進行初始化bean,上面咱們看到是調用的StrategyConfig這個類的無參構造器初始化的bean,咱們在返回到上級的這個方法源碼
最後調用了bean構造器工廠對象的方法對StrategyConfig對象的參數進行賦值it
咱們在返回到上圖的這行代碼
對data-source節點進行解析,這個節點的下級節點比較多,因此解析的邏輯比較複雜,這也是咱們今天配置解析的重點了,咱們進入到這個類ShardingJdbcDataSourceBeanDefinitionParser的parseInternal方法,咱們進入到這個方法
對SpringShardingDataSource這個對象進行初始化,咱們看下怎麼對這個對象進行初始化的
這個類的構造方法有兩個參數
factory.addConstructorArgValue(parseShardingRuleConfig(element, parserContext));這行代碼是對SpringShardingDataSource的構造方法賦值
咱們進入到這個方法
咱們進入上圖的這個方法,主角終於出場了,咱們進入這個方法
進入上圖的方法
返回上一級進入到這個方法
返回上一級進入到這個方法
最後這裏是對屬性的解析
配置解析第一部分完成了,內容比較多分兩篇來寫,咱們總結下到如今配置解析封裝成了幾個對象
StrategyConfig對象
ShardingRuleConfig分片規則配置對象
TableRuleConfig表規則配置對象
本次分享到這裏結束了,不對的地方歡迎留言指正,以上內容僅供參考。
歡迎關注本人微信公衆號「天河聊技術」,有更多javaWeb技術、架構、互金行業大數據相關的技術源碼解析的文章。