參考資料:
spring动态数据源的切换
Spring动态切换数据源
利用AbstractRoutingDataSource实现动态数据源切换 (一、Spring+Hibernate)
DYNAMIC DATASOURCE ROUTING
package tamino.tsai.config;
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
public class DynamicDataSource extends AbstractRoutingDataSource {
@Override
protected Object determineCurrentLookupKey() {
return DynamicDataSourceHolder.getDataSourceType();
}
}
package tamino.tsai.config;
import tamino.tsai.enums.DataSourceType;
public class DynamicDataSourceHolder {
private static final ThreadLocal<DataSourceType> contextHolder = new ThreadLocal<DataSourceType>();
// 設置DB類型
public static void setDataSourceType(DataSourceType dataSourceType) {
//Assert.notNull(dataSourceType, "DataSourceType cannot be null");
contextHolder.set(dataSourceType);
}
// 獲取DB類型
public static DataSourceType getDataSourceType() {
return (DataSourceType) contextHolder.get();
}
// 清除DB類型
public static void clearDataSourceType() {
contextHolder.remove();
}
}
package tamino.tsai.enums;
public enum DataSourceType {
KEYA,
KEYB
}
<bean id="baseDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@host1:port:abc" />
<property name="username" value="username" />
<property name="password" value="password" />
</bean>
<bean id="aDataSource" parent="baseDataSource">
<property name="url" value="jdbc:oracle:thin:@host1:port:abc" />
</bean>
<bean id="bDataSource" parent="baseDataSource">
<property name="url" value="jdbc:oracle:thin:@host2:port:abc" />
</bean>
<bean id="dataSource" class="tamino.tsai.config.DynamicDataSource">
<property name="targetDataSources">
<map key-type="tamino.tsai.enums.DataSourceType">
<entry key="KEYA" value-ref="aDataSource"></entry>
<entry key="KEYB" value-ref="bDataSource"></entry>
</map>
</property>
<property name="defaultTargetDataSource" ref="uatDataSource">
</property>
</bean>
<bean id="myDao" class="tamino.tsai.dao.impl.MyDaoImpl">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean>
分享到:
相关推荐
通过采用Oracle DataGuard技术和Spring Dynamic DataSource Routing等技术手段,系统能够有效地提升数据处理能力,确保在大量用户访问的情况下仍能保持良好的性能。此外,通过细致地规划用户中心和商品中心的功能及...
2. 动态数据源路由(Dynamic DataSource Routing): Spring提供了一个名为`AbstractRoutingDataSource`的抽象类,它可以动态决定使用哪个数据源。你需要创建一个继承自`AbstractRoutingDataSource`的类,并重写`...
Druid是阿里巴巴开源的一个高性能、强大的数据库连接池组件,它的全称是Dynamic Routing Data Source,即动态数据源。在Java开发中,特别是在Spring Boot项目中,Druid被广泛用于管理数据库连接,提供高效的连接池...
首先,多数据源解决方案的核心在于Spring 3的动态数据源路由(Dynamic DataSource Routing)。这个功能允许系统在运行时动态地选择要使用的数据源,而不需要重启服务。通过配置一个主数据源,并在需要时切换到其他...
Druid是阿里巴巴开源的一个高效、强大的数据库连接池组件,它的全称是Dynamic Routing Data Source,即动态路由数据源。Druid连接池在Java Web开发中被广泛使用,它提供了监控、扩展性、性能优化等特性,使得数据库...
Druid是阿里巴巴开源的一个高效、强大的数据库连接池组件,它的全称是Dynamic Routing Data Source,即动态路由数据源。在Java Web开发中,数据库连接池扮演着至关重要的角色,它负责管理数据库连接,提高数据库操作...
阿里Druid是一个高效、强大的Java数据库连接池组件,它的全称是Dynamic Routing Data Source,由阿里巴巴开源并维护。Druid的主要目标是提供监控、扩展性和性能优化,它在JDBC数据库连接池领域有着广泛的应用。在...
阿里Druid,全称为Dynamic Routing Data Source,是一款高效、强大的数据库连接池组件。在2019年11月,Druid发布了最新的版本1.1.21,该版本经过大规模项目的实际检验,稳定性和性能得到了广泛认可。作为一款广泛...
Druid是阿里巴巴开源的一个高效、强大的数据库连接池组件,它的全称是Dynamic Routing Data Source,动态数据源。在Java开发中,数据库连接池是系统性能优化的重要环节,它负责管理数据库连接,提供连接的复用,避免...
Druid,全称Dynamic Routing Database,是一个高性能、开源的Java数据库连接池。它不仅提供了数据库连接池功能,还包含了SQL解析、监控、拦截器等丰富的特性,能够帮助开发者更好地管理和优化数据库连接。Druid ...
Druid,全名Dynamic Routing Data Source,是由阿里巴巴开源的一款高效、强大的数据库连接池组件。它不仅是一个优秀的JDBC连接池,还包含了监控统计、SQL解析、日志、拦截器等功能,是现代Java企业级应用中的常见...