![](https://img-blog.csdnimg.cn/20190927151043371.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
druid
druid源码分析
qq_26146367
这个作者很懒,什么都没留下…
展开
-
druid源码分析—DruidDataSource的基本分析(九)
DruidDataSource Filter使用 SPI过滤器初始化 init方法进行SPI的过滤器加载,通过阅读ServiceLoader方法的API,了解到需要在resources/META-INF/services/,下创建名字为接口的全路径名称文件,内容为:实现类的全路径。 发现文件中并没有com.alibaba.druid.filter.Filter,也就是这个方法根本不会加载。 private void initFromSPIServiceLoader() { //跳过加载SP原创 2022-05-19 23:13:22 · 498 阅读 · 0 评论 -
druid源码分析—DruidDataSource的基本分析(八)
数据源的关闭方法(close) public void close() { if (LOG.isInfoEnabled()) { LOG.info("{dataSource-" + this.getID() + "} closing ..."); } //获取锁 lock.lock(); try { //如果已经关闭,则退出 if (this.closed原创 2022-05-18 22:06:53 · 677 阅读 · 0 评论 -
druid源码分析—DruidDataSource的基本分析(七)
销毁连接分析 在创建连接的init()方法,注意到创建了线程DestroyConnectionThread用来销毁连接的,线程循环是通过timeBetweenEvictionRunsMillis 参数来设置连接检查的时间间隔。 public void run() { //计数器减一 initedLatch.countDown(); for (;;) { // 从前面开始删除原创 2022-05-17 23:15:47 · 259 阅读 · 0 评论 -
druid源码分析—DruidDataSource的基本分析(六)
DruidDataSource参数解析 testOnBorrow 当testOnBorrow为true时,每次获取连接都会进行连接校验,当连接不可用,则关闭连接。不推荐使用 if (testOnBorrow) { //测试连接 boolean validate = testConnectionInternal(poolableConnection.holder, poolableConnection.conn);原创 2022-05-16 22:53:32 · 309 阅读 · 0 评论 -
druid源码分析—DruidDataSource的基本分析(五)
DruidDataSource Spring Bean 初始化 在Spring Boot项目中,我们只需要简单声明一下Druid就会自动调用,DruidDataSource 的init()方法 @Configuration @ConditionalOnClass(DruidDataSource.class) @AutoConfigureBefore(DataSourceAutoConfiguration.class) @EnableConfigurationProperties({DruidStatProp原创 2022-05-14 23:13:03 · 1640 阅读 · 0 评论 -
druid源码分析—DruidDataSource的基本分析(四)
Druid的守护线程CreateConnectionThread 当不存在创建任务createScheduler时,则创建守护线程CreateConnectionThread。该线程的主要作用是创建连接。 protected void createAndStartCreatorThread() { if (createScheduler == null) { String threadName = "Druid-ConnectionPool-Create-"原创 2022-05-14 17:07:05 · 432 阅读 · 0 评论 -
druid源码分析—DruidDataSource的基本分析(三)
druid源码分析—DruidDataSource的基本分析(三) 获取连接(getConnection) getConnection接口代码主要分为两个部分: 初始化连接池 获取连接 初始化连接池 创建驱动 创建驱动并根据数据库类别进行加载。 initFromSPIServiceLoader(); resolveDriver(); initCheck(); initExceptionSorter();原创 2022-05-13 02:12:51 · 417 阅读 · 0 评论 -
druid源码分析—DruidDataSource的基本分析(二)
druid源码分析—DruidDataSource的基本分析(二) getConnectionInternal基本分析 DruidDataSource 参数记录 //已使用的连接数量 private int activeCount = 0; //池内连接数量,init()方法会创建连接并赋值 private int poolingCount = 0; //连接数量 private long connectCount = 0L; //最高峰值记录 private int activePeak = 0; //最原创 2022-05-12 00:14:18 · 1353 阅读 · 0 评论 -
druid源码分析—DruidDataSource的基本分析(一)
druid源码分析(一)原创 2022-05-10 22:05:20 · 789 阅读 · 0 评论