`
cntsai
  • 浏览: 7300 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Spring Dynamic DataSource Routing

阅读更多
參考資料:
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数据库的读写分离电子商务系统的设计与实现.docx

    通过采用Oracle DataGuard技术和Spring Dynamic DataSource Routing等技术手段,系统能够有效地提升数据处理能力,确保在大量用户访问的情况下仍能保持良好的性能。此外,通过细致地规划用户中心和商品中心的功能及...

    spring1.2 操作多个数据源

    2. 动态数据源路由(Dynamic DataSource Routing): Spring提供了一个名为`AbstractRoutingDataSource`的抽象类,它可以动态决定使用哪个数据源。你需要创建一个继承自`AbstractRoutingDataSource`的类,并重写`...

    druid-master

    Druid是阿里巴巴开源的一个高性能、强大的数据库连接池组件,它的全称是Dynamic Routing Data Source,即动态数据源。在Java开发中,特别是在Spring Boot项目中,Druid被广泛用于管理数据库连接,提供高效的连接池...

    Ssh多数据源.doc

    首先,多数据源解决方案的核心在于Spring 3的动态数据源路由(Dynamic DataSource Routing)。这个功能允许系统在运行时动态地选择要使用的数据源,而不需要重启服务。通过配置一个主数据源,并在需要时切换到其他...

    配置Druid连接池需要的jar包-druid-1.0.15.jar

    Druid是阿里巴巴开源的一个高效、强大的数据库连接池组件,它的全称是Dynamic Routing Data Source,即动态路由数据源。Druid连接池在Java Web开发中被广泛使用,它提供了监控、扩展性、性能优化等特性,使得数据库...

    最新版druid 数据库连接池 druid-1.1.21.jar

    Druid是阿里巴巴开源的一个高效、强大的数据库连接池组件,它的全称是Dynamic Routing Data Source,即动态路由数据源。在Java Web开发中,数据库连接池扮演着至关重要的角色,它负责管理数据库连接,提高数据库操作...

    druid-1.0.9.7z

    阿里Druid是一个高效、强大的Java数据库连接池组件,它的全称是Dynamic Routing Data Source,由阿里巴巴开源并维护。Druid的主要目标是提供监控、扩展性和性能优化,它在JDBC数据库连接池领域有着广泛的应用。在...

    druid-1.1.21.zip

    阿里Druid,全称为Dynamic Routing Data Source,是一款高效、强大的数据库连接池组件。在2019年11月,Druid发布了最新的版本1.1.21,该版本经过大规模项目的实际检验,稳定性和性能得到了广泛认可。作为一款广泛...

    druid-1.0.9.rar

    Druid是阿里巴巴开源的一个高效、强大的数据库连接池组件,它的全称是Dynamic Routing Data Source,动态数据源。在Java开发中,数据库连接池是系统性能优化的重要环节,它负责管理数据库连接,提供连接的复用,避免...

    furnace-2.2.0.Final.zip

    Druid,全称Dynamic Routing Database,是一个高性能、开源的Java数据库连接池。它不仅提供了数据库连接池功能,还包含了SQL解析、监控、拦截器等丰富的特性,能够帮助开发者更好地管理和优化数据库连接。Druid ...

    druid-1.2.8.rar

    Druid,全名Dynamic Routing Data Source,是由阿里巴巴开源的一款高效、强大的数据库连接池组件。它不仅是一个优秀的JDBC连接池,还包含了监控统计、SQL解析、日志、拦截器等功能,是现代Java企业级应用中的常见...

Global site tag (gtag.js) - Google Analytics