温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

spring中怎么配置多数据源

发布时间:2021-08-06 16:26:55 来源:亿速云 阅读:93 作者:Leah 栏目:编程语言

spring中怎么配置多数据源,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

1.扩展 org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource

实现代码

import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;public class DynamicDataSource extends AbstractRoutingDataSource {  @Override  protected Object determineCurrentLookupKey() {    // TODO Auto-generated method stub    return DbContextHolder.getDbType();  }}

2.实现一个线程安全的DbContextHolder类。

public class DbContextHolder {    private static final ThreadLocal contextHolder = new ThreadLocal();    public static void setDbType(String dbType)    {      contextHolder.set(dbType);    }    /**     * 取得dbtype类型     * @return     */    public static String getDbType()    {      String str=(String) contextHolder.get();      if(null==str || "".equals(str))        str="1";      return str;    }    public static void clearDbType()    {      contextHolder.remove();    }}

3.修改spring的配置文件。

<!--动态选择数据源-->  <bean id="dataSource" class="tecamo.core.utils.DynamicDataSource">    <property name="targetDataSources">      <map key-type="java.lang.String">        <entry key="1" value-ref="ds1"/>        <entry key="2" value-ref="ds2"/>      </map>    </property>    <property name="defaultTargetDataSource" ref="ds1"/>  </bean>  <!-- 数据源定义 -->  <bean id="ds1" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">    <property name="driverClassName" value="${jdbc.driverClassName}"/>    <property name="url" value="${jdbc.url}"/>    <property name="username" value="${jdbc.username}"/>    <property name="password" value="${jdbc.password}"/>  </bean>  <bean id="ds2" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">    <property name="driverClassName" value="${jdbcOrcale.driverClassName}"/>    <property name="url" value="${jdbcOrcale.url}"/>    <property name="username" value="${jdbcOrcale.username}"/>    <property name="password" value="${jdbcOrcale.password}"/>  </bean>

4.切换数据源方法。

在serverice方法之前调用

DbContextHolder.setDbType("2");表示使用第二个数据源。

关于spring中怎么配置多数据源问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI