你的位置:首页 > 软件开发 > ASP.net > Spring 数据源配置三:多数据源

Spring 数据源配置三:多数据源

发布时间:2015-08-09 23:00:13
在上一节中,我们讲述了多数据的情况:1. 数据源不同(数据库厂商不同, 业务范围不同, 业务数据不同)2. SQL mapper 文件不同,3. mybatis + 数据方言不同即最为简单的多数据, 将多个数据源叠加在一起,不同service---》dao--->sessi ...

在上一节中,我们讲述了多数据的情况:

1. 数据源不同(数据库厂商不同, 业务范围不同, 业务数据不同)

2. SQL mapper 文件不同,

3. mybatis + 数据方言不同

即最为简单的多数据, 将多个数据源叠加在一起,不同service---》dao--->sessionFactory;

 

如果上述的所有条件都相同,仅仅是数据的的多个拷贝情况,想做主备(读写分离),那我们当然可以用2套复制的代码和配置,但是显然不是最佳的实现方式。

这里,我们就讲解一下多数据源的读写分离,怎么实现。

 

首先,我们从读写分离的入口来看,  读read (对应JAVA/ getXXX,  queryXXX),   写write(对应updateXXX,  insertXXX),  如果能在这些方法执行时,自动切换到只读数据库/只写数据,那么就可以实现读写分离, 那我们自然可以想到spring 的AOP, 并以annotation的方式实现。

 

具体实现步骤如下:

1.   实现自定义的数据源注解: @DataSource("read")  / @DataSource("write")

 1 package com.robin.it.ds; 2  3 import java.lang.annotation.Retention; 4 import java.lang.annotation.Target; 5 import java.lang.annotation.RetentionPolicy; 6 import java.lang.annotation.ElementType; 7 /**  8  * RUNTIME  9  * 编译器将把注释记录在类文件中,在运行时 VM 将保留注释,因此可以反射性地读取。 10  * @author Robin.yi 11  * 12 */ 13 14 @Retention(RetentionPolicy.RUNTIME) 15 @Target(ElementType.METHOD) 16 public @interface DataSource {17     String value(); 18 }

原标题:Spring 数据源配置三:多数据源

关键词:Spring

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录