<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
<bean id="dataSourceA" parent="parentDataSource">
<property name="user" value="root"></property>
<property name="password" value="123456"></property>
<property name="jdbcUrl"
value="jdbc:mysql://localhost:3306/u5_cn?useUnicode=true&characterEncoding=utf-8"></property>
</bean>
<bean id="dataSourceB" parent="parentDataSource">
<property name="jdbcUrl"
value="jdbc:mysql:/localhost:3306/szdc?useUnicode=true&characterEncoding=utf-8"></property>
<property name="user" value="root"></property>
<property name="password" value="123456"></property>
</bean>
<bean id="parentDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver">
</property>
<!--
<property name="jdbcUrl" 220.231.143.237
value="jdbc:mysql://localhost:3306/u5_cn?useUnicode=true&characterEncoding=utf-8"></property>
<property name="user" value="root"></property> <property
name="password" value="123456"></property>
--><!--连接池中保留的最小连接数。-->
<property name="minPoolSize">
<value>5</value>
</property>
<!--连接池中保留的最大连接数。Default: 15 -->
<property name="maxPoolSize">
<value>30</value>
</property>
<!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
<property name="initialPoolSize">
<value>10</value>
</property>
<!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
<property name="maxIdleTime">
<value>60</value>
</property>
<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
<property name="acquireIncrement">
<value>5</value>
</property>
<!--
JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements
属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。
如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0
-->
<property name="maxStatements">
<value>0</value>
</property>
<!--每60秒检查所有连接池中的空闲连接。Default: 0 -->
<property name="idleConnectionTestPeriod">
<value>60</value>
</property>
<!--定义在从数据库获取新连接失败后重复尝试的次数。Default: 30 -->
<property name="acquireRetryAttempts">
<value>30</value>
</property>
<!--
获取连接失败将会引起所有等待连接池来获取连接的线程抛出异常。但是数据源仍有效
保留,并在下次调用getConnection()的时候继续尝试获取连接。如果设为true,那么在尝试
获取连接失败后该数据源将申明已断开并永久关闭。Default: false
-->
<property name="breakAfterAcquireFailure">
<value>true</value>
</property>
<!--
因性能消耗大请只在需要的时候使用它。如果设为true那么在每个connection提交的
时候都将校验其有效性。建议使用idleConnectionTestPeriod或automaticTestTable
等方法来提升连接测试的性能。Default: false
-->
<property name="testConnectionOnCheckout">
<value>false</value>
</property>
</bean>
<!--动态数据源-->
<bean class="com.iksns.u5.DynamicDataSource" id="dataSource">
<property name="targetDataSources">
<map key-type="java.lang.String">
<entry key="a" value-ref="dataSourceA"></entry>
<entry key="b" value-ref="dataSourceB"></entry>
</map>
</property>
<property name="defaultTargetDataSource" ref="dataSourceA"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLInnoDBDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.generate_statistics">true</prop>
<prop key="hibernate.connection.release_mode">auto</prop>
<prop key="hibernate.autoReconnect">true</prop>
</props>
</property>
<property name="mappingResources">
<list>
</list>
</property>
</bean>
DynamicDataSource 继承 AbstractRoutingDataSource
具体代码
public class DynamicDataSource extends AbstractRoutingDataSource
{
@Override
protected Object determineCurrentLookupKey() {
// TODO Auto-generated method stub
return CustomerContextHolder.getCustomerType();
}
}
public class CustomerContextHolder {
private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>();
public static void setCustomerType(String customerType) {
contextHolder.set(customerType);
}
public static String getCustomerType() {
return (String) contextHolder.get();
}
public static void clearCustomerType() {
contextHolder.remove();
}
}
分享到:
相关推荐
springboot+mybatis多数据源+动态数据源配置(连接池),mysql数据库,代码实现了简单的读写分离,但是不建议这种操作,建议使用数据库中间件进行读写分离,例如使用mycat进行读写分离主从热备,使用该代码对于多个...
本项目——"spring-boot-easy-connection-pool-master",主要探讨了如何在Spring Boot环境下配置和管理连接池,并且实现了动态配置多数据源的功能,这对于大数据部门和数据中台服务尤其重要。 首先,让我们深入理解...
- **数据源配置类**:在Spring Boot的配置类中,使用@Configuration注解标记,定义多个数据源的@Bean。使用@ConfigurationProperties注解来绑定配置文件中的属性到数据源的Bean中,这样数据源的配置就可以从外部配置...
数据源连接池的基本用法,配置信息,代码案例、 实现数据源的动态切换和案例 数据源连接池的基本用法,配置信息,代码案例、 实现数据源的动态切换和案例 数据源连接池的基本用法,配置信息,代码案例、 实现...
**JDBC数据源连接池配置与使用详解** 在Java Web应用中,数据库连接的管理是至关重要的。为了提高性能和资源利用率,开发人员通常会使用数据源连接池。本篇文章将详细讲解JDBC数据源连接池的配置和使用,以帮助你更...
Hibernate的三种连接池设置C3P0、Proxool和DBCP. 详细说明及配置方法 Hibernate支持第三方的连接池,官方推荐的连接池是C3P0,Proxool,以及DBCP.
本教程将详细解释如何在Tomcat服务器上配置Oracle 10g数据库的连接池数据源。 首先,确保你已经安装了必要的软件环境: 1. Java环境:JDK 1.4 2. 服务器:Tomcat 5.5 3. 数据库:Oracle 10g 配置步骤如下: 1. **...
本配置教程将详细解析如何进行数据源连接池的设置,以提升应用的效率和稳定性。 首先,我们来看"DBUtils.java",这是一个常见的数据库工具类,通常用于封装数据库操作。在Java中,DBUtils类可能包含初始化连接池、...
- 使用Hibernate等ORM框架时,也需要进行相应的数据源配置,例如: ```xml <!-- JDBC --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <!-- 数据库URL --> ...
- 如果是集群环境,还需要考虑数据源的分布式一致性问题,可能需要使用像JNDI目录服务或分布式缓存来共享数据源配置。 通过以上步骤,您应该能够成功地在Tomcat中配置数据源连接池。正确配置和使用数据源不仅可以...
配置完成后,可以测试数据源连接,确保连接池和数据源配置正确。 GlassFish 中的数据源连接池提供了许多优点,例如: * 提高应用程序的性能:通过重用现有的数据库连接,减少了创建新连接的开销。 * 提高应用程序...
### 在WebLogic中建立数据库连接...通过以上步骤,您可以在WebLogic中成功配置数据库连接池与数据源,并使用JBuilder进行测试。这不仅有助于提高应用程序性能,还能够简化数据库访问逻辑,使应用程序更加健壮和可维护。
当我们面临需要处理多个数据库的情况时,多数据源配置就显得尤为重要。本教程将围绕"Springboot+Mybatis+Druid多数据源配置"这一主题,详细介绍如何实现这一功能。 首先,Spring Boot简化了Spring应用的初始化和...
### Spring Boot多数据源配置详解 #### 一、引言 在实际的软件开发过程中,随着业务需求的多样化,单一的数据源已经无法满足所有场景的需求。例如,有时我们需要同时访问两个或更多的数据库来完成复杂的业务逻辑,...
4. 配置连接池参数:在数据源配置页面,可以设置连接池的大小,如最小连接数、最大连接数、初始连接数等。此外,还可以配置连接超时、空闲连接存活时间等参数,以优化连接池的使用效率。 5. 配置JNDI名称:为数据源...
配置数据源是连接池配置的核心部分。在这里,我们将讨论配置 context.xml 文件和 web.xml 文件。 1. 配置 context.xml 文件 context.xml 文件的内容如下: ```xml maxActive="100" maxIdle="30" maxWait=...
### Tomcat 6连接池数据源配置详解 #### 一、引言 在Java Web开发中,数据库连接的管理是一项非常重要的任务。合理地管理和优化数据库连接不仅可以提高应用程序的性能,还能有效避免资源浪费和系统崩溃的风险。...
总结来说,配置WebLogic连接Oracle RAC数据源是一个涉及多个层面的过程,包括JDBC驱动的管理、数据源的创建和配置、高可用性策略的设定,以及部署后的监控。正确执行这些步骤,可以确保WebLogic应用在Oracle RAC环境...
在Tomcat中配置连接池与数据源通常是在`server.xml`文件中进行的。以下是一些具体的配置示例: 1. **配置连接池**: - 添加`<Resource>`标签,指定连接池的参数。 - 例如: ```xml type="javax.sql.DataSource...