spring集成配置解析
本文转自“天河聊技术”微信公众号
找到spring的handler这个类
上图中是对sharding-jdbc的三个标签的解析,我们这次主要分析分片配置的解析,读写分离的配置解析也是一样的逻辑
我们看到上图中的init的方法第一行是对分片策略的解析,进入到初始化的这个类中
进入到上图中的业务方法,根据传进来的xml节点对象,也就是strategy的xml节点对象进行下一步解析
我们跟踪上图的第一行代码的rootBeanDefinition方法进去发现这个方法
factoryMethodName这个属性值赋值为null,接着在进入到下个方法内
spring初始化bean有两种方法,一种是工厂方法模式、一种就是直接调用无参构造器进行初始化bean,上面我们看到是调用的StrategyConfig这个类的无参构造器初始化的bean,我们在返回到上级的这个方法
最后调用了bean构造器工厂对象的方法对StrategyConfig对象的参数进行赋值
我们在返回到上图的这行代码
对data-source节点进行解析,这个节点的下级节点比较多,所以解析的逻辑比较复杂,这也是我们今天配置解析的重点了,我们进入到这个类ShardingJdbcDataSourceBeanDefinitionParser的parseInternal方法,我们进入到这个方法
对SpringShardingDataSource这个对象进行初始化,我们看下怎么对这个对象进行初始化的
这个类的构造方法有两个参数
factory.addConstructorArgValue(parseShardingRuleConfig(element, parserContext));这行代码是对SpringShardingDataSource的构造方法赋值
我们进入到这个方法
我们进入上图的这个方法,主角终于出场了,我们进入这个方法
进入上图的方法
返回上一级进入到这个方法
返回上一级进入到这个方法
最后这里是对属性的解析
配置解析第一部分完成了,内容比较多分两篇来写,我们总结下到现在配置解析封装成了几个对象
StrategyConfig对象
ShardingRuleConfig分片规则配置对象
TableRuleConfig表规则配置对象
本次分享到这里结束了,不对的地方欢迎留言指正,以上内容仅供参考。
欢迎关注本人微信公众号“天河聊技术”,有更多javaWeb技术、架构、互金行业大数据相关的技术源码解析的文章。