`
awed
  • 浏览: 34744 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

Spring利用继承DelegatingDataSource实现多数据源切换

    博客分类:
  • j2ee
阅读更多

根据用户所在的区域切换到自己区域的数据源,

自定义DataSource继承org.springframework.jdbc.datasource.DelegatingDataSource并且重写

 public Connection getConnection() throws SQLException方法

 public Connection getConnection() throws SQLException {
    	AgilityUserBean userBean = ThreadContext.getUser();
    	if(userBean != null){
			System.out.println("the system will user " + dataSourceName + userBean.getLocale() + " dataSource");
			ds = ApplicationContext.getInstance().getBean(dataSourceName + userBean.getLocale());
				
    		if(ds == null){
    			throw new SQLException("can't find the dataSource for this region.");
    		}
			
    		setTargetDataSource((DataSource)ds);
    	}else{
    		System.out.println("System use default dataSource " + dataSourceName);
    	}

        Assert.state(getTargetDataSource() != null, "targetDataSource is required");
        Connection con = null;
        try {
            con = getTargetDataSource().getConnection();
        } catch (SQLException e) {
            logger.error("Error occured during connection request. Thread name = " +
                    Thread.currentThread().getName());
            logger.error("Listing binded to thread resources...");
            throw e;
        }
        return con;
    }

 

经过简单的验证可行,不知道这样是否完全正确,希望大家拍砖!

 

 

分享到:
评论

相关推荐

    spring+druid+AtomikosDataSource实现多数据源切换及分布式事务控制

    使用Spring的`AbstractRoutingDataSource`,我们可以实现数据源的动态选择。这个抽象类会根据当前的业务上下文(例如,通过`ThreadLocal`变量)决定使用哪个数据源。这样,我们可以在运行时根据业务需求灵活地切换...

    springboot-AOP实现多数据源动态切换(Druid连接池)

    它具备高并发、高性能、监控、高可用性、可扩展性等特点,是实现数据源动态切换时的一个优秀选择。 3. **数据源配置**:在Spring Boot应用中,通常会有一个配置文件(如application.yml或application.properties)...

    SpringBoot配置多数据源实现动态切换数据源

    本文将深入探讨如何在SpringBoot项目中配置多数据源,并实现数据源的动态切换,帮助你理解和掌握这一核心技能。 首先,我们理解"多数据源"的概念。在SpringBoot应用中,多数据源意味着系统能够连接并操作多个不同的...

    Springcloud 多数库 多数据源整合,查询动态切换数据库

    2. **动态切换数据源**:在Spring框架中,我们可以利用AOP(面向切面编程)和ThreadLocal来实现数据源的动态切换。创建一个自定义的数据源切换注解,比如`@SwitchDataSource`,并在需要切换数据源的方法上使用。通过...

    springboot实现多数据源而且加上事务不会使aop切换数据源失效

    本示例主要讲解如何使用Spring Boot结合MyBatis实现多数据源切换,并确保AOP事务管理仍然有效。 首先,我们需要配置多数据源。在Spring Boot中,可以使用`DataSource`接口的实现类,如`HikariCP`或`Druid`,创建两...

    Mybatis+Spring+SpringMVC+quartz多数据源切换

    综上所述,这个项目利用了Mybatis、Spring、SpringMVC和Quartz的强大功能,构建了一个能够灵活切换数据源并实现跨数据库同步的系统。通过合理的配置和调度,可以有效地处理复杂的分布式数据库环境中的数据一致性问题...

    mybatis+spring实现动态切换数据源

    我们需要创建一个自定义的DataSource,继承自`AbstractRoutingDataSource`,并在`determineCurrentLookupKey`方法中实现数据源的选择逻辑。 ```java public class DynamicDataSource extends ...

    Spring Boot多数据源(支持Spring声明式事务切换和回滚).pdf

    - 通过AspectJ实现数据源的动态切换,可以设置在类级别或方法级别,方法级的设置优先于类级。这使得开发者可以根据业务逻辑自由地决定使用哪个数据源。 - 数据源的注册、修改和删除可以在运行时完成,无需重启服务...

    spring-boot集成mybtis+druid实现hive/mysql多数据源切换

    本文将详细讨论如何使用Spring Boot、MyBatis和Druid来实现MySQL与Hive之间的多数据源切换,以满足不同业务场景的需求。 首先,Spring Boot是Spring框架的一种轻量级实现,它简化了配置并提供了快速开发新应用的...

    Spring+SpringMvc+MybatisPlus+Aop(自定义注解)动态切换数据源

    在这个项目中,我们利用自定义的Aop注解来实现数据源的动态切换。自定义注解可以附加在方法上,当该方法被调用时,AOP会捕获这个调用并执行相应的逻辑,即切换到指定的数据源。 具体实现步骤如下: 1. 定义数据源...

    SpringBoot整合mybatis-plus实现多数据源的动态切换且支持分页查询.pdf

    接着,创建`DynamicDataSource`配置类,以实现数据源的动态切换: ```java @Configuration public class DynamicDataSource { @Autowired private DataSource masterDataSource; @Autowired private ...

    spring boot AOP注解方式实现多数据源

    在Spring Boot中,AOP(面向切面编程)和多数据源的整合是常见的应用场景,尤其是在大型企业级项目中,为了实现数据的隔离或者优化数据库访问,常常需要配置多个数据源。本文将深入探讨如何使用Spring Boot的AOP注解...

    使用springboot + JPA / MyBatis 实现多数据源动态切换

    本教程将详细讲解如何使用Spring Boot结合JPA或MyBatis框架实现多数据源的动态切换。 **一、Spring Boot与JPA** 1. **Spring Boot简介**:Spring Boot是Spring Framework的一个模块,旨在简化Spring应用的初始搭建...

    Spring动态切换多数据源Demo

    总的来说,"Spring动态切换多数据源Demo"是一个实战教程,旨在教你如何在Spring应用程序中实现数据源的动态切换,以及如何处理相关的配置和事务管理。通过学习这个Demo,你可以掌握在Spring环境中处理多数据库连接的...

    spring boot多数据源(AOP注解动态切换)

    本教程将详细讲解如何在Spring Boot项目中集成Druid连接池,并利用AOP注解实现多数据源的动态切换。我们将基于JDK 1.8和Spring Boot 1.5.14版本进行讨论。 首先,我们需要理解Spring Boot的自动配置特性。Spring ...

    spring boot数据源切换demo

    在Spring Boot应用中,数据源切换是一个常见的需求,特别是在分布式系统或者微服务架构中,可能需要连接多个数据库来实现不同的业务功能。本示例“spring boot数据源切换demo”将展示如何在Spring Boot中集成MyBatis...

    Spring(AbstractRoutingDataSource)实现动态数据源切换示例

    【Spring 动态数据源切换】使用 `AbstractRoutingDataSource` 的详细实现在处理多数据库环境时,Spring 提供了一个强大的工具 `AbstractRoutingDataSource`,它允许我们根据特定条件动态地切换数据源。本文将深入...

    Springboot整合Druid与Mybatis的多数据源切换

    本教程将详细介绍如何在Spring Boot项目中整合Druid数据源池与Mybatis,实现多数据源切换的功能,并提供一个亲测可用的解决方案。 首先,让我们了解Spring Boot、Druid和Mybatis这三大组件的基础知识: **Spring ...

    spring boot动态切换多数据源

    总结来说,Spring Boot动态切换多数据源是通过合理的配置和自定义逻辑实现的,它使得应用能够灵活地处理来自不同数据库的数据,提高了系统的可扩展性和灵活性。在实际项目中,理解和掌握这一技术有助于构建更高效、...

    spring多数据源动态切换方案

    下面我们将详细探讨如何在Spring中实现多数据源的配置及动态切换。 首先,我们要理解数据源是什么。数据源(DataSource)是Java中用于存储和管理数据库连接的接口,通常由JDBC驱动提供。在Spring框架中,我们可以...

Global site tag (gtag.js) - Google Analytics