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

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

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

多數(shù)據(jù)源問(wèn)題很常見(jiàn),例如讀寫(xiě)分離數(shù)據(jù)庫(kù)配置。

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

研究成果如下:

1、首先配置多個(gè)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、寫(xiě)一個(gè)DynamicDataSource類(lèi)繼承AbstractRoutingDataSource,并實(shí)現(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解決線(xiàn)程安全問(wèn)題

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ù)源

復(fù)制代碼 代碼如下:

CustomerContextHolder.setCustomerType(CustomerContextHolder.DATA_SOURCE_B);  

搞定!

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

兴化市| 买车| 湖北省| 炎陵县| 长乐市| 内江市| 广灵县| 凤山县| 吐鲁番市| 奉贤区| 利辛县| 渑池县| 江门市| 安康市| 永年县| 民乐县| 行唐县| 福泉市| 福建省| 尉犁县| 和顺县| 理塘县| 从江县| 天水市| 读书| 会泽县| 焦作市| 无为县| 贵德县| 合作市| 温州市| 安多县| 海盐县| 宜州市| 洛南县| 西乌珠穆沁旗| 永济市| 遵义市| 永清县| 鹰潭市| 江门市|