Spring MVC配置双数据源实现一个java项目同时连接两个数据库的方法

前言

本文主要介绍的是关于Spring MVC配置双数据源实现一个java项目同时连接两个数据库的方法,分享出来供大家参考学习,下面来看看详细的介绍:

实现方法:

数据源在配置文件中的配置

 
 
 
  
 
  
 
  
   
    
    classpath:com/resource/config.properties 
    
   
  
 
  
   
   
   
   
   
   
   
  
 
  
   
   
   
   
   
   
   
  
 
  
   
    
     
     
    
   
   
   
  
 
  
   
   
    
    org.hibernate.dialect.MySQLDialect 
    org.springframework.orm.hibernate4.SpringSessionContext 
    false 
    true 
    create 
    
   
   
    
    com.po 
    
   
  
 
  
   
  
 
  
   
   
  
 
  
   
    
    
    
    
    
   
  
 
  
   
    
    
    
    
   
  
 

DynamicDataSource.class

package com.core; 
 
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource; 
 
public class DynamicDataSource extends AbstractRoutingDataSource{ 
 
 @Override 
 protected Object determineCurrentLookupKey() { 
  return DatabaseContextHolder.getCustomerType(); 
 } 
 
} 

DatabaseContextHolder.class设置数据源的类

package com.core; 
 
public class DatabaseContextHolder { 
 
 private static final ThreadLocal contextHolder = new ThreadLocal(); 
 //设置要使用的数据源 
 public static void setCustomerType(String customerType) { 
  contextHolder.set(customerType); 
 } 
 //获取数据源 
 public static String getCustomerType() { 
  return contextHolder.get(); 
 } 
 //清除数据源,使用默认的数据源 
 public static void clearCustomerType() { 
  contextHolder.remove(); 
 } 
} 

DataSourceInterceptor.class

package com.core; 
 
import org.aspectj.lang.JoinPoint; 
import org.springframework.stereotype.Component; 
 
@Component 
public class DataSourceInterceptor { 
 //数据源1 
 public static final String SOURCE_PLAN = "dataSourceOne"; 
 //数据源2 
 public static final String SOURCE_FUND = "dataSourceTwo"; 
}

springMVC数据源

jdbc_driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver 
dataSourceOne=jdbc:sqlserver://115.29.***.**;DatabaseName=DB_GuiHua 

jdbc_username=**jdbc_password=**

dataSourceTwo=jdbc:sqlserver://115.29.***.*;DatabaseName=DB_Fund 

Spring MVC会默认有一个数据源,当需要更换数据源时,要在调用事务之前配置

DataSourceContextHolder.setDbType(DataSourceType.SOURCE_FUND);//更换数据源 
/** 
 * @ClassName: DataSourceContextHolder 
 * @Description: 数据库切换工具类 
 * @author: wzx 
 * @date: 2016-07-27 上午10:26:01 
 */ 
public class DataSourceContextHolder { 
 private static final ThreadLocal contextHolder = new ThreadLocal(); 
 
 public static void setDbType(String dbType) { 
  contextHolder.set(dbType); 
 } 
 
 public static String getDbType() { 
  return ((String) contextHolder.get()); 
 } 
 
 public static void clearDbType() { 
  contextHolder.remove(); 
 } 
} 

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

你可能感兴趣的:(Spring MVC配置双数据源实现一个java项目同时连接两个数据库的方法)