转自:http://www.itpub.net/thread-1906608-1-1.html
1、首先配置两个数据库
<bean id="dataSourceA" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="maxActive" value="${jdbc.maxActive}" />
<property name="maxWait" value="${jdbc.maxWait}" />
</bean>
<bean id="dataSourceB" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${vjdbc.driverClassName}" />
<property name="url" value="${vjdbc.url}" />
<property name="username" value="${vjdbc.username}" />
<property name="password" value="${vjdbc.password}" />
<property name="maxActive" value="${jdbc.maxActive}" />
<property name="maxWait" value="${jdbc.maxWait}" />
</bean>
2、再配置一个dataSource 管理 key 值和value值对应,默认选择dataSourceA ,其他配置按照正常的spring mvc 配置即可。
<bean id="dataSource" class="com.broadengate.util.DynamicDataSource">
<!-- 通过key-value的形式来关联数据源 -->
<property name="targetDataSources">
<map key-type="java.lang.String">
<entry value-ref="dataSourceA" key="dataSourceA"></entry>
<entry value-ref="dataSourceB" key="dataSourceB"></entry>
</map>
</property>
<property name="defaultTargetDataSource" ref="dataSourceA" >
</property>
</bean>
3、sessionFactory 中使用 dataSource做数据源。
4、新建一个DynamicDataSource类继承AbstractRoutingDataSource。
public class DynamicDataSource extends AbstractRoutingDataSource{
public static final String DATA_SOURCE_A = "dataSourceA";
public static final String DATA_SOURCE_B = "dataSourceB";
private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>();
public static void setCustomerType(String customerType) {
contextHolder.set(customerType);
}
public static String getCustomerType() {
return contextHolder.get();
}
public static void clearCustomerType() {
contextHolder.remove();
}
@Override
protected Object determineCurrentLookupKey() {
return getCustomerType();
}
}
5、切换数据源,这一步必须在进入业务层之前切换。
DynamicDataSource.setCustomerType(DynamicDataSource.DATA_SOURCE_A);
分享到:
相关推荐
1. **Spring MVC与数据源配置**: - 在Spring MVC应用中,我们通常通过Spring的`AbstractRoutingDataSource`来实现数据源的动态切换。这个抽象类可以根据某种条件(如线程绑定、请求参数等)决定使用哪个具体的数据...
在多数据源配置中,Spring能够帮助管理不同的数据源,通过配置bean来切换和控制数据源的使用。 **SpringMVC** 是Spring框架的一部分,专为Web开发设计。它简化了模型-视图-控制器(Model-View-Controller,MVC)的...
本实例将详细介绍如何在Spring MVC项目中配置并使用Druid数据源。 首先,我们需要理解Spring MVC和Druid的基本概念。Spring MVC是Spring框架的一部分,用于构建Web应用程序,它遵循MVC(Model-View-Controller)...
在IT行业中,Spring框架是Java企业级应用开发的首选,而Spring MVC是Spring框架的一个重要模块,用于构建Web应用程序。本文将深入探讨Spring与Spring MVC的整合配置,并结合标签"源码"和"工具"来解析相关的技术细节...
5. **项目结构**:一个典型的Spring MVC Maven项目结构包括`src/main/java`(存放源代码)、`src/main/resources`(存放配置文件和静态资源)、`src/main/webapp/WEB-INF`(存放`web.xml`配置文件)等。 6. **配置...
在本配置中,我们将探讨如何将Spring MVC与Apache DBCP数据源和JdbcTemplate结合使用,以实现高效、安全的数据库操作。 Apache DBCP(Database Connection Pool)是一个连接池组件,它允许应用在多个用户之间共享...
在本文中,我们将深入探讨如何使用Spring MVC和Maven来构建一个Java项目。Spring MVC是Spring框架的一个模块,专门用于构建Web应用程序,而Maven则是一个项目管理工具,用于简化构建、依赖管理和项目文档的生成。 *...
4. **配置**:在 Spring MVC 中,通常使用 XML 或 Java配置来定义视图解析器、拦截器、数据源等。然而,这个超简示例可能使用了自动配置(Auto-configuration)和 Spring Boot,通过少量或无需配置即可运行。 5. **...
《Java EE企业级应用开发教程Spring+Spring MVC+MyBatis》是一本深入探讨Java企业级应用程序开发的书籍,源代码包含多个章节的实例,旨在帮助读者理解和掌握使用Spring、Spring MVC和MyBatis框架进行实际开发的关键...
总的来说,"Mastering Spring MVC 4(2015.09)源码"提供了深入学习Spring MVC的机会,你可以通过阅读和分析源码来了解如何配置DispatcherServlet、怎样编写控制器、如何进行数据绑定与验证,以及如何利用拦截器等特性...
在配置方面,Spring MVC使用XML或Java配置来定义组件,包括Controller、Service、DAO等。随着Spring的发展,现在更倾向于使用Java配置,因为它更加直观且易于维护。另外,Spring Boot的出现简化了Spring MVC的配置,...
2. **Java配置增强**:Spring 4.2.x系列进一步提升了Java配置的支持,使得在没有XML配置的情况下也能轻松地配置Spring MVC。 3. **RESTful支持**:Spring MVC提供了对RESTful风格的HTTP方法(如GET、POST、PUT、...
2. **spring-mvc.xml**:定义Bean、数据源、事务管理器、视图解析器、HandlerMapping和HandlerAdapter等。 四、Spring MVC 原理 1. **AOP代理**:Spring MVC中的切面编程用于实现如日志记录、事务管理等功能。 2. ...
不过,现代Spring MVC项目往往倾向于使用Java配置或Spring Boot的自动配置,减少了XML的使用。 在"Springmvc"这个压缩包中,可能包含了配置文件、控制器类、视图模板(可能是JSP或Thymeleaf文件)以及其他相关的源...
6. **数据绑定与验证**:Spring MVC提供了数据绑定和验证功能,允许将表单数据自动绑定到Java对象,并进行校验,简化了业务逻辑处理。 7. **视图解析**:Spring MVC 4.0支持多种视图技术,如JSP、FreeMarker、...
其核心组件包括 Subject(当前操作用户)、SecurityManager(安全管理器)、Realm(认证和授权数据源)。通过配置 Shiro 配置文件或使用 Java Config,可以实现细粒度的权限控制。 在"spring mvc + shiro"的集成中...
Java EE企业级应用开发是构建大型、复杂系统的关键技术,其中Spring、Spring MVC和MyBatis是核心组件,常被组合使用,形成了SSM(Spring + Spring MVC + MyBatis)框架栈。这个教程源代码提供了深入理解这些技术的...
当项目需要同时连接并操作多个数据库时,就需要配置双数据源。本篇文章将详细介绍如何在Spring MVC项目中实现双数据源,以便应用程序能够根据业务需求灵活地切换或使用不同的数据库。 首先,我们需要在配置文件中...
- `Spring MVC + Mybatis+Spring实现的个人博客系统`: 这个可能是博客系统的源代码,包括控制器、服务、DAO、实体类以及配置文件等。 **6. 开发流程** 开发此类系统时,一般会经历以下几个步骤:设计数据库模型,...
在Spring配置文件中引入MyBatis的配置,例如`mybatis-config.xml`,并配置SqlSessionFactoryBean,指定MyBatis的配置文件和数据源。 - **配置MyBatis-Spring** 引入MyBatis-Spring库,这是一个连接Spring和...