欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

原來的項目出現(xiàn)了新需求,局方要求新增某服務(wù)器用以提供某代碼,涉及到多數(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ù)源

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

CustomerContextHolder.setCustomerType(CustomerContextHolder.DATA_SOURCE_B);  

搞定!

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

相關(guān)文章

  • SpringBoot中的@Configuration注解詳解

    SpringBoot中的@Configuration注解詳解

    這篇文章主要介紹了SpringBoot中的@Configuration注解詳解,Spring Boot推薦使用JAVA配置來完全代替XML 配置,JAVA配置就是通過 @Configuration和 @Bean兩個注解實現(xiàn)的,需要的朋友可以參考下
    2023-08-08
  • 基于SpringBoot+vue實現(xiàn)前后端數(shù)據(jù)加解密

    基于SpringBoot+vue實現(xiàn)前后端數(shù)據(jù)加解密

    這篇文章主要給大家介紹了基于SpringBoot+vue實現(xiàn)前后端數(shù)據(jù)加解密,文中有詳細(xì)的示例代碼,具有一定的參考價值,感興趣的小伙伴可以自己動手試一試
    2023-08-08
  • Java微服務(wù)實戰(zhàn)項目尚融寶接口創(chuàng)建詳解

    Java微服務(wù)實戰(zhàn)項目尚融寶接口創(chuàng)建詳解

    這篇文章主要介紹了Java微服務(wù)實戰(zhàn)項目尚融寶的接口創(chuàng)建流程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • java遞歸實現(xiàn)科赫雪花

    java遞歸實現(xiàn)科赫雪花

    這篇文章主要為大家詳細(xì)介紹了java遞歸實現(xiàn)科赫雪花,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Java中List  Set和Map之間的區(qū)別_動力節(jié)點Java學(xué)院整理

    Java中List Set和Map之間的區(qū)別_動力節(jié)點Java學(xué)院整理

    Java集合的主要分為三種類型set集,list列表,map映射,接下來通過本文給大家詳細(xì)介紹java中l(wèi)ist、Set和Map之間的區(qū)別,需要的的朋友參考下吧
    2017-05-05
  • spring-retry組件的使用教程

    spring-retry組件的使用教程

    Spring Retry的主要目的是為了提高系統(tǒng)的可靠性和容錯性,當(dāng)方法調(diào)用失敗時,Spring Retry可以在不影響系統(tǒng)性能的情況下,自動進(jìn)行重試,從而減少故障對系統(tǒng)的影響,這篇文章主要介紹了spring-retry組件的使用,需要的朋友可以參考下
    2023-06-06
  • Java實現(xiàn)TCP互發(fā)消息

    Java實現(xiàn)TCP互發(fā)消息

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)TCP互發(fā)消息,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • Springboot?RestTemplate設(shè)置超時時間的簡單方法

    Springboot?RestTemplate設(shè)置超時時間的簡單方法

    學(xué)習(xí)springboot ,RestTemplate的使用場景非常非常多,比如springcloud中的服務(wù)消費,下面這篇文章主要給大家介紹了關(guān)于Springboot?RestTemplate設(shè)置超時時間的簡單方法,需要的朋友可以參考下
    2022-01-01
  • Netty網(wǎng)絡(luò)編程零基礎(chǔ)入門

    Netty網(wǎng)絡(luò)編程零基礎(chǔ)入門

    Netty是一個異步的、基于事件驅(qū)動的網(wǎng)絡(luò)應(yīng)用框架,用于快速開發(fā)可維護(hù)、高性能的網(wǎng)絡(luò)服務(wù)器和客戶端,如果你還不了解它的使用,就趕快繼續(xù)往下看吧
    2022-08-08
  • Mybatis實現(xiàn)動態(tài)SQL編寫詳細(xì)代碼示例

    Mybatis實現(xiàn)動態(tài)SQL編寫詳細(xì)代碼示例

    這篇文章主要為大家詳細(xì)介紹了Mybatis中動態(tài)SQL的編寫使用,動態(tài)SQL技術(shù)是一種根據(jù)特定條件動態(tài)拼裝SQL語句的功能,它存在的意義是為了解決拼接SQL語句字符串時的痛點問題,感興趣想要詳細(xì)了解可以參考下文
    2023-05-05

最新評論