双数据源


      
       ${jdbc.driverClassName}
       ${jdbc.url}
       ${jdbc.username}
       ${jdbc.password}
       
   
            
          
            
          
            
          
            
          
          
          
            
          
            
          
          
          
          
          
          
          
          
         
          
         
         



      
       ${jdbc.oracleDriver}
       ${jdbc.oracleUrl}
       ${jdbc.oracleUN}
       ${jdbc.oraclePwd}
       
   
            
          
            
          
            
          
            
          
          
          
            
          
            
          
          
          
          
          
          
          
          
         
          
         
         



         
         
             
                 
                 
             

         

     





import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;


public class DynamicDataSource extends AbstractRoutingDataSource{




    public static final String  mysqlDataSource= "mysqlDataSource";  
      
    public static final String oracleDataSource = "oracleDataSource";  
    //本地线程,获取当前正在执行的currentThread  
    public 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();  
    }  
  
    @Override  
    protected Object determineCurrentLookupKey() {  
        return getCustomerType();    
    }  


}




try {
DynamicDataSource.clearCustomerType();//重点: 实际操作证明,切换的时候最好清空一下
        DynamicDataSource.setCustomerType(DynamicDataSource.oracleDataSource);//切换数据源,设置后 就OK了。可以随时切换过来(在controller层切换) 
       
} catch (Exception e) {
e.printStackTrace();
}finally {
DynamicDataSource.clearCustomerType();
DynamicDataSource.setCustomerType(DynamicDataSource.mysqlDataSource);//切换回主数据源 

}




你可能感兴趣的:(spring)