最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解利用Spring的AbstractRoutingDataSource解決多數(shù)據(jù)源的問題

 更新時間:2017年03月01日 15:22:26   作者:alaahong  
本篇文章主要介紹了詳解利用Spring的AbstractRoutingDataSource解決多數(shù)據(jù)源的問題。具有一定的參考價值,有興趣的可以了解一下。

多數(shù)據(jù)源問題很常見,例如讀寫分離數(shù)據(jù)庫配置。

原來的項目出現(xiàn)了新需求,局方要求新增某服務器用以提供某代碼,涉及到多數(shù)據(jù)源的問題。

研究成果如下:

1、首先配置多個datasource

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> 
    <property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver"> 
    </property> 
    <property name="url" value="jdbc:jtds:sqlserver://10.82.81.51:1433;databaseName=standards"> 
    </property> 
    <property name="username" value="youguess"></property> 
    <property name="password" value="youguess"></property> 
  </bean> 
  <bean id="dataSource2" class="org.apache.commons.dbcp.BasicDataSource"> 
    <property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver"> 
    </property> 
    <property name="url" value="jdbc:jtds:sqlserver://10.82.81.52:1433;databaseName=standards"> 
    </property> 
    <property name="username" value="youguess"></property> 
    <property name="password" value="youguess"></property> 
</bean> 

2、寫一個DynamicDataSource類繼承AbstractRoutingDataSource,并實現(xiàn)determineCurrentLookupKey方法

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

3、利用ThreadLocal解決線程安全問題

package com.standard.core.util; 
public class CustomerContextHolder { 
  public static final String DATA_SOURCE_A = "dataSource"; 
  public static final String DATA_SOURCE_B = "dataSource2"; 
  private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>(); 
  public static void setCustomerType(String customerType) { 
    contextHolder.set(customerType); 
  } 
  public static String getCustomerType() { 
    return contextHolder.get(); 
  } 
  public static void clearCustomerType() { 
    contextHolder.remove(); 
  } 
} 

4、數(shù)據(jù)源配置

<bean id="dynamicDataSource" class="com.standard.core.util.DynamicDataSource" > 
    <property name="targetDataSources"> 
      <map key-type="java.lang.String"> 
        <entry value-ref="dataSource" key="dataSource"></entry> 
        <entry value-ref="dataSource2" key="dataSource2"></entry> 
      </map> 
    </property> 
    <property name="defaultTargetDataSource" ref="dataSource" > 
    </property> 
  </bean> 

 5、在DAOImpl中切換數(shù)據(jù)源

復制代碼 代碼如下:

CustomerContextHolder.setCustomerType(CustomerContextHolder.DATA_SOURCE_B);  

搞定!

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

姜堰市| 上林县| 新丰县| 栾川县| 嘉黎县| 德昌县| 进贤县| 安乡县| 仙游县| 深州市| 兰西县| 荥经县| 双江| 惠州市| 革吉县| 高安市| 鸡西市| 大丰市| 崇仁县| 鹰潭市| 遂宁市| 阳信县| 利津县| 邯郸市| 阜康市| 城市| 枣强县| 龙里县| 泸州市| 普定县| 青海省| 北海市| 甘南县| 浦北县| 南宫市| 十堰市| 抚远县| 神木县| 方山县| 潮州市| 上林县|