kyrin(云中鹤)

koala

项目源码以及demo:https://github.com/zeq9069/koala 请大家关注一下哦!!哈哈!

最近,在开发项目的时候后,要用到多个数据源的动态切换,,于是就开发了koala这个小小得框架,koala支持多数据源的切换,数据源的分组和负载均衡(轮询)!只需要将jar引入到你自己的项目中之后,然后进行简单配置就可以使用了!!使用起来非常方便,该项目提供了三个核心的注解@ChangeTo,@DataSourceDistribute,@DataSourceGroup. 我们在下面详细的讲解一下怎么使用。1. @ChangeTo 该注解是用在你的service层的实现类的方法上的,意思就是改变数据源为指定的数据源,例如:@ChangeTo(value=”slave”),将数据源切换到数据源slave。如果不设置value的话,意思就是使用默认的数据源。2.@DataSourceDistribute 该注解使用在service层的实现类的类上,我叫它”数据源派遣”,哈哈!什么意思呢?就是将指定的数据源分配到对应的方法上。例如:@DataSourceDistribute(value={@DataSourceEntity(dataSource=”slave”,methodPattern=”get*|delete*”)})这个注解有点长,我们来分析一下。 首先,@DataSourceDistribute这个注解是主体,它有一个数组形式的参数value,这个数组里放的是好多个子注解@DataSourceEntity,每一个子注解中都有两个参数dataSource和methodPattern,dataSource对应数据源,methodPattern对应一些方法名的正则表达式。 这样你就明白了吧?这个例子的意思就是将数据源slave分配到跟以get或者delete开头的方法上!!!当然你可以设置多个@DataSourceEntity,这里只设置了一个!!这样就不用在每一个方法上手动设置数据源了,省了不少事!!3.@DataSourceGroup 这个注解也是用在service层的实现类上,它更上一个注解不同,上一个注解只能将一个dataSource对应到多个方法上,而@DataSourceGroup的目的就是一个或多个方法对应到一个dataSource组,也就是多个dataSource!!!这一个数据源组中的数据源是轮询执行的,这样就起到了负载均衡的效果!! 例如,@DataSourceGroup(groups={@Group(groupName=”master-group”,methodPattern=”get*|delete*”)})呵呵!!是不是跟上一个注解很类似啊!! 我们详细解释一下,首先@DataSourceGroup有个数组形式的参数groups,里卖弄存放的是一些子注解@Group,@Group中又有两个参数groupName和methodPattern,分别对应数据源组名和方法名的正则表达式。(怎么配置数据源和数据源组名呢??详细请看项目的使用文档https://github.com/zeq9069/koala) 上面的例子意思就是将以get或delete开头的方法对应到数据源组master-group上,这样当方法执行时,就可以去轮询master-group组中的数据源了,而且数据源被访问到机会是均等的。这样既起到了负载均衡的效果又简化了配置。

以上的核心内容就完了!

去看看项目源码吧,有详细的配置和注意事项说明。

有什么不懂得发邮件到 kyrincloud@qq.com

那段雨骤风狂。人生之旅本就是风雨兼程,是要说曾经拥有,

kyrin(云中鹤)

相关文章:

你感兴趣的文章:

标签云: