Maison > Java > javaDidacticiel > Analyse des exemples d'utilisation de plusieurs sources de données Spring MVC Mybatis

Analyse des exemples d'utilisation de plusieurs sources de données Spring MVC Mybatis

高洛峰
Libérer: 2017-01-24 10:28:23
original
1729 Les gens l'ont consulté

Le projet doit obtenir des données d'autres sites Web. Comme il s'agit d'une exigence temporaire, je ne m'attendais pas à avoir besoin de plusieurs sources de données lorsque j'ai démarré le projet.

J'ai donc cherché sur Baidu et j'ai découvert que c'était le cas. il suffit de modifier le fichier Spring applicationContext.xml. Et l'écriture de trois classes d'outils peut obtenir une implémentation parfaite

applicationContext.xml

<!-- 多数据源配置 -->
 <bean id="ds1" class="org.apache.commons.dbcp.BasicDataSource">
  <property name="driverClassName" value="${jdbc.driverClassName}" />
  <property name="url" value="${jdbc.url}" />
  <property name="username" value="${jdbc.username}" />
  <property name="password" value="" />
 </bean>
 <bean id="ds2" class="org.apache.commons.dbcp.BasicDataSource">
  <property name="driverClassName" value="" />
  <property name="url" value="" />
  <property name="username" value="" />
  <property name="password" value="" />
 </bean>
 <!-- 动态配置数据源 -->
 <bean id="dataSource" class="com.test.utils.DynamicDataSource">//这里是你项目里DynamicDataSource.java的路径
  <property name="targetDataSources">
   <map key-type="java.lang.String">
    <entry value-ref="ds_admin" key="ds1"></entry>
    <entry value-ref="ds_partner" key="ds2"></entry>
   </map>
  </property>
  <!-- 默认使用ds1的数据源 -->
  <property name="defaultTargetDataSource" ref="ds_admin"></property> 
 </bean>
Copier après la connexion

DataSourceContextHolder.java

public class DataSourceContextHolder {
 private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>();
 public static void setDbType(String dbType) {
  contextHolder.set(dbType);
 }
 public static String getDbType() {
  return ((String) contextHolder.get());
 }
 public static void clearDbType() {
  contextHolder.remove();
 }
}
Copier après la connexion

DataSourceType.java (définir des variables statiques)

public class DataSourceType {
 // 默认数据库
 public static final String SOURCE_ADMIN = "ds1";
 // 第二个数据库,在applicationContext.xml里的id
 public static final String SOURCE_PARTNER = "ds2";
}
Copier après la connexion

Le suivant est la clé DynamicDataSource.java qui hérite de la méthode abstraite détermineCurrentLookupKey dans AbstractRoutingDataSource et est implémenté au cœur de l'itinéraire de la source de données. Remplacez cette méthode ici.

import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
public class DynamicDataSource extends AbstractRoutingDataSource {
 @Override
 protected Object determineCurrentLookupKey() {
  return DataSourceContextHolder.getDbType();
 }
}
Copier après la connexion

Ce qui précède est l'analyse des exemples d'utilisation de plusieurs sources de données Spring MVC Mybatis présentés par l'éditeur. J'espère que cela vous sera utile si vous avez des questions. , merci de nous le faire savoir, je laisserai un message et l'éditeur vous répondra à temps. Je voudrais également vous remercier tous pour votre soutien au site Web PHP chinois !

Pour plus d'articles liés à l'analyse des cas d'utilisation des multiples sources de données Spring MVC Mybatis, veuillez faire attention au site Web PHP chinois !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal