再看前面示例工程启动后看到的{dataSource-1} inited,也是在init方法的末尾处,初始了相关配置了就会打印处这么一句话,表示Druid的数据源创建成功。 3 官方文档Spring boot项目中轻松集成Druid数据库连接池和监控
initStackTrace =Utils.toString(Thread.currentThread().getStackTrace());this.id =DruidDriver.createDataSourceId();if(this.id > 1) {longdelta = (this.id - 1) * 100000;this.connectionIdSeedUpdater.addAndGet(this, delta);this.statementIdSeedUpdater.addAndGet(this, delta);this.resultSetIdSeedUp...
1. 导入jar包 druid-1.0.9.jar 2. 定义配置文件: *是properties形式的 * 可以叫任意名称,可以放在任意目录下 3. 加载配置文件。Properties 4. 获取数据库连接池对象:通过工厂来来获取 DruidDataSourceFactory 5. 获取连接:getConnection 配置文件: driverClassName=com.mysql.jdbc.Driver //驱动加载 url=jdbc:my...
output("活跃连接数: " + dataSource.getActiveCount()) output("空闲连接数: " + dataSource.getPoolingCount()) } } 控制台输出: 16:31:55:819 pool-2-thread-3 {dataSource-1} inited 16:31:57:353 pool-2-thread-1 活跃连接数: 2 16:31:57:353 pool-2-thread-2 活跃连接数: 2 16:31:57...
3.2 DataSource初始化 初始化主流程 init() 初始化流程一般在启动应用时被调起,里面包含4类重要逻辑: 各种配置初始化和各种校验 初始化后续执行所用到的filter、exceptionSorter、checker 创建initialSize的connection 启动创建/销毁两个线程 publicvoidinit()throwsSQLException{if(inited){return;}// bug fixed for dea...
inited=true; lock.unlock();//释放锁if(init &&LOG.isInfoEnabled()) { LOG.info("{dataSource-" +this.getID() + "} inited"); } } } 我这里做了删减,加了一些简单的注释。通过这个方法,正好复习一下之前写的那些知识点,如果感兴趣,可以看看我之前写的文章。
2023-12-09T21:20:31.561+08:00INFO26176---[main]c.a.d.s.b.a.DruidDataSourceAutoConfigure:Init DruidDataSource2023-12-09T21:20:32.328+08:00INFO26176---[main]com.alibaba.druid.pool.DruidDataSource:{dataSource-1}inited 访问页面 项目启动后,我们可以通过访问 Druid 控制台来监控和管理数据库连接...
CreateConnectionThread() 执行的initedLatch.countDown();这里是需要等待销毁线程创建完成后才会继续执行的。 privatefinalCountDownLatchinitedLatch=newCountDownLatch(2); publicvoidrun(){// 生产者线程这里需要等待销毁线程创建完成后才会继续执行,销毁线程初始化的时候也会执行initedLatch.countDown();initedLatch.cou...
2023-12-09T21:20:31.561+08:00INFO26176---[ main]c.a.d.s.b.a.DruidDataSourceAutoConfigure: Init DruidDataSource2023-12-09T21:20:32.328+08:00INFO26176---[ main]com.alibaba.druid.pool.DruidDataSource: {dataSource-1} inited 访问页面 ...
if(inited){return;}if(createScheduler!=null&&asyncInit){for(inti=0;i<initialSize;++i){submitCreateTask(true);}} (4)调用DruidDataSource.pollLast(long nanos)方法,参数超时纳秒,获取连接池数组尾部连接;如果连接池为0时,emptySignal()方法会提交创建连接的任务,如果存活的连接超过最大连接数,会创建失败,...