<!-- 分散配置 --> <context:property-placeholder location="classpath:jdbc.properties"/> <!-- 配置(主库)数据源 --> <bean id="dataSource-main" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${jdbc.driverclass}" /> <property name="jdbcUrl" value="${jdbc.url}" /> <property name="user" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <property name="maxPoolSize" value="${c3p0.pool.size.max}" /> <property name="minPoolSize" value="${c3p0.pool.size.min}" /> <property name="initialPoolSize" value="${c3p0.pool.size.ini}" /> <property name="acquireIncrement" value="${c3p0.pool.size.increment}" /> </bean> <!-- 配置从库数据源 --> <bean id="dataSource-1" parent="dataSource-main"> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/lsn_surveypark001_1" /> </bean> <!-- 数据源路由器 --> <bean id="dataSourceRouter" class="com.surveypark.datasource.SurveyparkDataSourceRouter"> <!-- 目标数据源集合 --> <property name="targetDataSources"> <map> <entry key="odd" value-ref="dataSource-main" /> <entry key="even" value-ref="dataSource-1" /> </map> </property> <!-- 默认数据源集合 --> <property name="defaultTargetDataSource" ref="dataSource-main" /> </bean>
public class SurveyparkDataSourceRouter extends AbstractRoutingDataSource { protected Object determineCurrentLookupKey() { SurveyparkToken token = SurveyparkToken.getCurrentToken(); if(token != null){ Integer id = token.getSurvey().getId(); SurveyparkToken.unbindToken(); return ((id % 2) == 0) ? "even" : "odd" ; } return null; } }
public class SurveyparkToken { private static ThreadLocal<SurveyparkToken> l = new ThreadLocal<SurveyparkToken>(); private Survey survey ; public Survey getSurvey() { return survey; } public void setSurvey(Survey survey) { this.survey = survey; } public static void bindToken(SurveyparkToken token){ l.set(token); } public static void unbindToken(){ l.remove(); } public static SurveyparkToken getCurrentToken(){ return l.get(); } }
SurveyparkToken token = new SurveyparkToken(); token.setSurvey(getCurrentSurvey()); SurveyparkToken.bindToken(token); surveyService.saveAnswers(processAnswers());
捐助开发者
在兴趣的驱动下,写一个免费
的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。
谢谢您的赞助,我会做的更好!
相关推荐
使用注解配置实现Spring动态数据源切换,实现原理 1、自定义动态数据源类DynamicDataSource: 实现spring类AbstractRoutingDataSource的方法determineCurrentLookupKey 2、自定义Spring AOP类DataSourceAspect 3、...
mybatis+spring实现动态切换数据源,修改数据源配置信息之后,直接运行test可进行测试
请自行修改com/resources/datasource.properties中数据库配置,Demo中配置的两个数据源,一个是Mysql,一个是Oracle。 运行之前请自行建立数据库的表。
spring 动态切换数据源
1. 基于Aspectj实现动态数据源切换,支持类级、方法级,方法级优先于类级 2. 实现数据源动态注册、修改、删除,无需重启服务 3. 实现同时兼容多种数据源连接池 4. 实现动态数据源连接池属性配置 5. 采用双端队列实现...
个人博文----真正意义的spring动态切换数据源 对应的源码,使用spring+springmvc+mybatis开发
用于详细描述配置spring下多数据源动态切换方案的实施配置说明。可以自动切换数据源的配置。
Spring+SpringMvc+MybatisPlus实现多数据源切换、利用自定义Aop注解,只需要在需要切换数据库的方法上加上注解即可实现、极大避免了代码冗余。
spring boot mybatis plus 多数据源切换的demo解压运行
spring mybatis 多数据源动态切换
通过SpringAop实现多数据源的动态切换 并采用Druid连接池,可扩展继续增加数据库配置。
通过简单的demo实现SpingBoot多数据源配置并动态切换多数据源
mybatis+spring实现动态切换数据源,修改数据源配置信息之后,直接运行test可进行测试 maven项目 导入即可 jar包都不用 适合学习参考 出自Java自学网 (Java自学网专供 就是免积分下载)
Spring 动态切换 数据源 可同事在多个数据源中切换
本篇文章主要介绍了详解Spring(AbstractRoutingDataSource)实现动态数据源切换,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
Springcloud 多数库 多数据源整合,查询动态切换数据库
spring boot整合druid连接池,采用注解方式实现多数据源动态切换 jdk版本1.8 spring boot版本1.5.14
一个spring boot动态切换多数据源的完整demo。
spring+druid+AtomikosDataSource实现多数据源切换及分布式事务控制
java spring 多数据源目前版本为mysql版本 利用spring aop 切面,自动切换数据源。