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配置文件中配置数据源的问题、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)