1、Spring数据源配置如下:
配置主从数据源ds1,ds2,分别提供给统一的数据源ds来调度;
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<!-- 配置数据源 -->
<!-- 主数据库服务器 -->
<bean id="ds1"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.logicalcobwebs.proxool.ProxoolDriver" />
<property name="url" value="proxool.db1" />
</bean>
<!-- 从数据库服务器 -->
<bean id="ds2"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="org.logicalcobwebs.proxool.ProxoolDriver" />
<property name="url" value="proxool.db2" />
</bean>
<!-- 统一数据源-->
<bean id="ds" class="com.a8.web.core.dynads.DynamicDataSource">
<property name="targetDataSources">
<map key-type="java.lang.String">
<entry key="ds1" value-ref="ds1" />
<entry key="ds2" value-ref="ds2" />
</map>
</property>
<property name="defaultTargetDataSource" ref="ds1" />
</bean>
</beans>
2、代码继承AbstractRoutingDataSource
import java.sql.Connection;
import java.sql.SQLException;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import com.a8.web.util.ApplicationConstantUtil;
public class DynamicDataSource extends AbstractRoutingDataSource {
// 主数据库bean名
private static String MASTER = "ds1";
// 从数据库bean名
private static String SLAVEDS = "ds2";
@Override
protected Object determineCurrentLookupKey() {
String dskey = "";
try {
// 获取上下文
WebApplicationContext wac = WebApplicationContextUtils
.getRequiredWebApplicationContext(ApplicationConstantUtil
.getServletContext());
// 获取从数据库连接
DriverManagerDataSource curr_ds = (DriverManagerDataSource) wac
.getBean(SLAVEDS);
Connection conn = curr_ds.getConnection();
if (conn.isClosed()) {
// 主数据库
dskey = MASTER;
} else {
// 从数据库
dskey = SLAVEDS;
}
} catch (SQLException e1) {
dskey = MASTER;
}
return dskey;
}
}
分享到:
相关推荐
1. **Spring Boot支持**:STS包含对Spring Boot项目的全面支持,包括创建新项目、启动器配置、自动配置检测和运行/调试功能。 2. **Spring Insight**:这是一个强大的性能分析工具,可以帮助开发者理解应用程序的...
- **合并多个持久化单元**:支持在同一个应用程序中使用多个不同的数据源。 #### 3.2 CDI集成 - **CDI(Contexts and Dependency Injection)集成**:与Java EE容器集成,提供更强大的依赖注入能力。 以上是...
- C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。 - C3P0的优势在于其内置的自动检测和修复损坏的连接功能,以及对多线程环境的良好支持。 - 配置C3P0的步骤与DBCP...
Spring Boot 数据库连接断线重连问题解决方案 ...Spring Boot 数据库连接断线重连问题可以通过配置数据源和调整配置参数来解决。同时,需要确保防火墙不会自动断开数据库连接,以确保应用程序的稳定性。
同时,防止链接欺诈,比如检测死链、自动取消未返回链接的网站等。 在安全性方面,源码应该遵循最佳实践,避免SQL注入、XSS攻击等问题。对用户输入进行验证,使用预处理语句或参数化查询,以及对敏感信息加密,都是...
例如,如果检测到 `HikariCP` 数据源存在,就会自动配置数据库连接池。 3. **内嵌式服务器(Embedded Servers)** Spring Boot 支持内嵌 Tomcat、Jetty 或 Undertow 服务器,使得应用可以无需额外打包成 WAR 文件...
第七部分 Spring数据集成 273 38. Spring Data&Spring安全配置 273 39. @Query中的安全表达式 273 第八部分 附录 274 40.安全数据库模式 274 40.1用户模式 274 40.1.1集团当局 274 40.2持久登录(记得我)架构 275 ...
- **内容:** 提供关于 Spring Security 的进一步学习资源和文档链接。 #### 四、结构和实现 **5.1 技术概述** - **运行环境:** Spring Security 支持的 Java 版本和其他技术栈。 - **核心组件:** - **...
1. **自动配置**:Spring Boot会自动检测并配置合适的Spring Data模块。 2. **简化依赖管理**:Spring Boot提供了默认的依赖版本,避免了版本冲突问题。 3. **便捷的数据源配置**:Spring Boot支持简单的YAML或...
3. **异常处理**:自动检测和处理失效的连接,保证系统稳定性。 4. **灵活性**:丰富的配置选项使得C3P0可以适应各种应用场景。 总的来说,C3P0作为一款成熟的数据库连接池,对于Java开发者来说,是一个值得信赖的...
它集成了大量的常用组件,如数据源、JPA、MVC、WebSocket等,提供了自动配置功能,使得开发者能够快速构建可运行的应用程序。 在描述中提到的链接是一个CSDN博客文章,该文章详细记录了创建一个SpringBoot项目的...
5. 同步操作:在确认差异后,工具可能还提供了同步功能,允许用户一键更新目标数据库以匹配源数据库的结构。 源码的开放意味着用户可以根据实际需求进行定制和扩展,例如添加对其他数据库系统的支持,或者优化性能...
3.12.4. 自动检测组件的命名 3.12.5. 为自动检测的组件提供一个作用域 3.12.6. 用注解提供限定符元数据 3.13. 注册一个LoadTimeWeaver 4. 资源 4.1. 简介 4.2. Resource接口 4.3. 内置 Resource 实现 4.3.1....
3.12.4. 自动检测组件的命名 3.12.5. 为自动检测的组件提供一个作用域 3.12.6. 用注解提供限定符元数据 3.13. 注册一个LoadTimeWeaver 4. 资源 4.1. 简介 4.2. Resource接口 4.3. 内置 Resource 实现 4.3.1....
本文将深入探讨德鲁伊连接池的工作原理、主要特性以及如何配置和使用,以帮助开发者更好地理解和应用这个高效的数据源管理库。 德鲁伊连接池的全称是Druid DataSource,它的设计目标是提供监控、扩展性和性能优化等...
- **简介**:一个强大的、开放源代码的任务调度框架。 - **链接**:[http://www.quartz-scheduler.org/](http://www.quartz-scheduler.org/) - **核心特性**: - 任务调度 - 定时执行 - 触发器管理 ##### 18. ...
该文件主要用于配置Bean的定义,包括数据源、事务管理器等。 ```xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context=...
4. **数据库连接池c3p0**:c3p0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,提供了一些高级特性,如连接测试和空闲连接检测。在`spring-context.xml`中,你会看到c3p0的数据源配置,包括最大连接数、初始化...
在实际开发中,还可以结合Spring框架,利用其对C3P0的支持,实现更便捷的数据源管理。 总结起来,JDBC+C3P0的组合提供了一种高效、可扩展的数据库连接池解决方案,尤其适用于大型的、高并发的Web应用程序。合理配置...
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。 JDBC(Java Database Connectivity)是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,提供了诸如查询和...