DruidDataSource智能匹配Driver原理
来源:互联网 发布:熊猫tv mac客户端 编辑:程序博客网 时间:2024/06/03 08:57
今天在复习Spring整合Mybatis的时候,在编写例子期间,比较了主流的三种数据库连接池(dbcp、c3p0和druid)的数据源配置,发现在druid的配置中不需要声明使用的是哪个数据库驱动Driver。
以下是Spring的数据源的配置:
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="url" value="jdbc:h2:~/test" /> <property name="username" value="sa"/> <property name="password" value=""/> </bean>
在对com.alibaba.druid.pool.DruidDataSource进行断点调试之后,发现:
PS:参考的druid源码版本是1.0.9
- 数据库的基本配置其实是在com.alibaba.druid.pool.DruidDataSource的父类com.alibaba.druid.pool.DruidAbstractDataSource中的属性。
- 可以通过driverClass属性显式配置数据库驱动类(要使用全限定类型)
- 在com.alibaba.druid.pool.DruidDataSource的init()方法中:
public void init(){ //省略部分不相关的代码 ... if (this.driver == null) { if (this.driverClass == null || this.driverClass.isEmpty()) { this.driverClass = JdbcUtils.getDriverClassName(this.jdbcUrl); } if (MockDriver.class.getName().equals(driverClass)) { driver = MockDriver.instance; } else { driver = JdbcUtils.createDriver(driverClassLoader, driverClass); } } else { if (this.driverClass == null) { this.driverClass = driver.getClass().getName(); } } ...}
在这个方法中,Druid是通过使用com.alibaba.druid.util.JdbcUtils的getDriverClassName()方法通过url去获取到对应的数据驱动类的全限定名。
PS:JdbcUtils的getDriverClassName()方法一大堆if else
阅读全文
0 0
- DruidDataSource智能匹配Driver原理
- DruidDataSource
- DruidDataSource配置
- DruidDataSource配置
- perl 5 智能匹配
- perl智能匹配
- 智能拨号匹配算法
- Hive Driver 原理
- 手机智能拨号匹配算法
- Erlang port driver工作原理
- platform平台device和driver如何匹配
- vf的device和driver的匹配
- 智能炸弹工作原理
- Android 智能指针原理
- 智能指针作用原理
- Android 智能指针原理
- Android 智能指针原理
- C++智能指针原理
- 一台 windows 系统电脑同时安装多个版本 JDK
- Android初级开发(四)——补充4、ListView
- 关于oracle的环境变量
- linux学习笔记(1)- 启动关机
- POJ 2155 Matrix 二维线段树
- DruidDataSource智能匹配Driver原理
- Mongodb基础篇(二)之安装数据库和开启相应的服务
- 单元测试datasource错误问题
- UDP --01--基本开发设计
- 史前巨坑-包的使用
- TCP概述
- IntelliJ IDEA 中如何配置多个jdk版本即(1.7和1.8两个jdk都可用)
- JZOJ 8.7 B组总结
- 常见的3种博弈总结