<bean
class="cn.com.dao.impl.demoDaoImpl">
<property ref="sessionFactory"/>
</bean>
<bean
class="cn.com.dao.impl.demoDao1Impl">
<property ref="sessionFactory1"/>
</bean>
2.可以采用代码手动控制
DBContextHolder.setCustomerType(DBContextHolder.masterDataSource);
DBContextHolder.setCustomerType(DBContextHolder.slaveDataSource);
3.可以采用AOP的控制方式
@Aspect
public class DynamicDataSourceAspect {
@Pointcut("execution (public service.impl..*.*(..))")
public void serviceExecution(){}
@Before("serviceExecution()")
public void setDynamicDataSource(JoinPoint jp) {
for(Object o : jp.getArgs()) {
//处理具体的逻辑 ,根据具体的境况
DBContextHolder.setCustomerType()选取DataSource
}
}
}
7.总结
通过扩展Spring的AbstractRoutingDataSource可以很好的实现多数据源的rout效果,而且对扩展更多的数据源有良好的伸缩 性,只要增加数据源和修改DynamicDataSource的targetDataSources属性配置就好。
基于 Spring 设计并实现 RESTful Web Services
Spring-3.2.4 + Quartz-2.2.0集成实例