如何在spring框架中解决多数据源的问题

如何在spring框架中解决多数据源的问题,第1张

spring 配置文件:

    <!-- 数据源 A -->

    <bean id="dataSourceA" class="commchangev2c3p0ComboPooledDataSource">

<property name="driverClass" value="${driver}" />

<property name="jdbcUrl" value="${urlScm}" />

<property name="user" value="${usernameScm}" />

<property name="password" value="${passwordScm}" />

    </bean>

    

    <!-- 数据源 B -->

    <bean id="dataSourceB" class="commchangev2c3p0ComboPooledDataSource">

<property name="driverClass" value="${driver}" />

<property name="jdbcUrl" value="${urlWS}" />

<property name="user" value="${usernameWS}" />

<property name="password" value="${passwordWS}" />

    </bean>

<!-- 多数据源管理,默认为 dataSourceScm 数据源 -->

     <bean id="dataSource" class="comcommondataSourceDynamicDataSource">

<property name="targetDataSources">

<map key-type="javalangString">

<entry key="dataSourceA" value-ref="dataSourceA" />

<entry key="dataSourceB" value-ref="dataSourceB" />

</map>

</property>

<property name="defaultTargetDataSource" ref="dataSourceA" />

</bean>

多数据源切换的基础类:

package comcommondataSource;

import orgspringframeworkjdbcdatasourcelookupAbstractRoutingDataSource;

public class DynamicDataSource extends AbstractRoutingDataSource {

@Override

protected Object determineCurrentLookupKey() {

return DbContextHoldergetDbType();   

}

}

切换的 *** 作类:

package comcommondataSource;

public class DbContextHolder {

private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>();

public static void setDbType(String dbType) {

contextHolderset(dbType);

}

public static String getDbType() {

return (String) contextHolderget();

}

public static void clearDbType() {

contextHolderremove();

}

}

使用的时候调用 DbContextHoldersetDbType 方法,传入相应的在 spring 配置文件里面的配置的数据源名称就可以了

action中添加属性UsersDAO 为其添加方法,private UsersDAO UsersDAO = null;

添加setter方法,代码中就可以用UsersDAO

访问UsersDAO 类中的方法:

<bean id="dataSource" class="orgspringframeworkjdbcdatasourceDriverManagerDataSource">

        <property name="driverClassName" value="netsourceforgejtdsjdbcDriver" />

        <property name="url" value="jdbc:jtds:sqlserver://localhost:1433/database" />

        <property name="username" value="sa" />

        <property name="password" value="admin" />

</bean>

<bean id="sessionFactory"

class="orgspringframeworkormhibernate3LocalSessionFactoryBean">

<property name="dataSource">

<ref bean="dataSource"></ref>

</property>

</bean>

<bean id="UsersDAO" class="bysjqyqdaoimplUsersDAO">

<property name="sessionFactory">

<ref bean="sessionFactory"></ref>

</property>

</bean>

以上就是关于如何在spring框架中解决多数据源的问题全部的内容,包括:如何在spring框架中解决多数据源的问题、spring配置文件中配置数据源的问题、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9688698.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存