您可以通过扩展它来使用spring的
AbstractRoutingDataSource并覆盖应该返回引用要使用的数据源的spring bean的键的方法determinCurrentLookupKey()。
基本上要回答你的问题,你需要做的是将两个数据源定义为XML配置中不同的spring bean。没有必要动态创建一个,Spring将加载两者,并根据您在criteriaCurrentLookupKey()方法中的条件动态使用一个或另一个。
这将导致如下:
XML配置
Java的
public class MyRoutingDataSource extends AbstractRoutingDataSource {
@Override
protected Object determineCurrentLookupKey() {
// get the current url
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
if (request.getRequestURL().toString().endsWith("/minor"))
return "MINOR";
else
return "MAJOR";
}
}