Druid源码分析(九)-- 总结
Druid源码分析(九)-- 总结
init
经过前面那么多天的分析,我们了解了连接池从初始化、创建连接、获取连接、关闭连接、归还连接到收缩连接的整个流程。
下面是init函数的流程
数据库连接池
下面是数据库连接池执行sql的流程,还有某些情况下会调用shrink 函数收缩连接池
总结
这么多天源码分析下来,学到了很多东西
1.双重校验+锁
2.SPI机制
3.如果需要监听锁的中断状态,可以使用 lockInterruptibly 函数
4.锁的粒度要尽可能的小,多分段使用锁
5.责任链模式
6.想扩展一个东西, 可以包装一层,比如DruidConnectionHolder 包装了原始的数据库连接Connection
7.善用池化技术,比如这个数据库连接池,关闭连接后没有真的关闭连接,而是清除属性后把连接回收到连接池,减少每次新创建连接的损耗
8.最好使用最新的release版本,比如Druid目前最新是1.2.8,因为有些参数在新版已经被舍弃了