druid 配置详解

15、框架-SpringBoot-使用Druid数据源 DRUID 简介 Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0、DBCP、PROXOOL 等 DB 池的优点,同时加入了日志监控。 Druid 可以很好的监控 DB 池连接和 SQL 的执行情况,天生就是针对监控而生的 DB 连接池。 Spring Boot 2.0 以上默认使用 Hikari 数据源,可以说 Hikari 与 Driud 都是当前 Java Web 上最... 阅读详情

Java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,有不得不使用数据库连接池。数据库连接池有很多选择,c3p、dhcp、proxool等,druid作为一名后起之秀,凭借其出色的性能,也逐渐印入了大家的眼帘。接下来本教程就说一下druid的简单使用。

首先从 http://repo1.maven.org/maven2/com/alibaba/druid/ 下载最新的jar包。如果想使用最新的源码编译,可以从 https://github.com/alibaba/druid 下载源码,然后使用maven命令行,或者导入到eclipse中进行编译。

和dbcp类似,druid的配置项如下

配置 缺省值 说明
name   配置这个属性的意义在于,如果存在多个数据源,监控的时候 
可以通过名字来区分开来。如果没有配置,将会生成一个名字, 
格式是:"DataSource-" + System.identityHashCode(this)
jdbcUrl   连接数据库的url,不同数据库不一样。例如: 
mysql : jdbc:mysql://10.20.153.104:3306/druid2  
oracle : jdbc:oracle:thin:@10.20.149.85:1521:ocnauto
username   连接数据库的用户名
password   连接数据库的密码。如果你不希望密码直接写在配置文件中, 
可以使用ConfigFilter。详细看这里: 
https://github.com/alibaba/druid/wiki/%E4%BD%BF%E7%94%A8ConfigFilter
driverClassName 根据url自动识别 这一项可配可不配,如果不配置druid会根据url自动识别dbType,然后选择相应的driverClassName
initialSize 0 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时
maxActive 8 最大连接池数量
maxIdle 8 已经不再使用,配置了也没效果
minIdle   最小连接池数量
maxWait   获取连接时最大等待时间,单位毫秒。配置了maxWait之后, 
缺省启用公平锁,并发效率会有所下降, 
如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
poolPreparedStatements false 是否缓存preparedStatement,也就是PSCache。 
PSCache对支持游标的数据库性能提升巨大,比如说oracle。 
在mysql5.5以下的版本中没有PSCache功能,建议关闭掉。
作者在5.5版本中使用PSCache,通过监控界面发现PSCache有缓存命中率记录, 
该应该是支持PSCache。
maxOpenPreparedStatements -1 要启用PSCache,必须配置大于0,当大于0时, 
poolPreparedStatements自动触发修改为true。 
在Druid中,不会存在Oracle下PSCache占用内存过多的问题, 
可以把这个数值配置大一些,比如说100
validationQuery   用来检测连接是否有效的sql,要求是一个查询语句。 
如果validationQuery为null,testOnBorrow、testOnReturn、 
testWhileIdle都不会其作用。
testOnBorrow true 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
testOnReturn false 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
testWhileIdle false 建议配置为true,不影响性能,并且保证安全性。 
申请连接的时候检测,如果空闲时间大于 
timeBetweenEvictionRunsMillis, 
执行validationQuery检测连接是否有效。
timeBetweenEvictionRunsMillis   有两个含义: 
1) Destroy线程会检测连接的间隔时间 
2) testWhileIdle的判断依据,详细看testWhileIdle属性的说明
numTestsPerEvictionRun   不再使用,一个DruidDataSource只支持一个EvictionRun
minEvictableIdleTimeMillis    
connectionInitSqls   物理连接初始化的时候执行的sql
exceptionSorter 根据dbType自动识别 当数据库抛出一些不可恢复的异常时,抛弃连接
filters   属性类型是字符串,通过别名的方式配置扩展插件, 
常用的插件有: 
监控统计用的filter:stat  
日志用的filter:log4j 
防御sql注入的filter:wall
proxyFilters   类型是List<com.alibaba.druid.filter.Filter>, 
如果同时配置了filters和proxyFilters, 
是组合关系,并非替换关系
表1.1 配置属性

加入 druid-1.0.9.jar

ApplicationContext.xml

[html]  view plain  copy
  1. < bean name = "transactionManager" class ="org.springframework.jdbc.datasource.DataSourceTransactionManager" >     
  2.     < property name = "dataSource" ref = "dataSource" ></ property >  
  3.      </ bean >  
  4.     < bean id = "propertyConfigurer" class ="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" >    
  5.        < property name = "locations" >    
  6.            < list >    
  7.                  < value > /WEB-INF/classes/dbconfig.properties </ value >    
  8.             </ list >    
  9.         </ property >    
  10.     </ bean >  
     ApplicationContext.xml配置druid   

[html]  view plain  copy
  1. <!-- 阿里 druid 数据库连接池 -->  
  2.   < bean id = "dataSource" class = "com.alibaba.druid.pool.DruidDataSource"destroy-method = "close" >    
  3.        <!-- 数据库基本信息配置 -->  
  4.        < property name = "url" value = "${url}" />    
  5.        < property name = "username" value = "${username}" />    
  6.        < property name = "password" value = "${password}" />    
  7.        < property name = "driverClassName" value = "${driverClassName}" />    
  8.        < property name = "filters" value = "${filters}" />    
  9.         <!-- 最大并发连接数 -->  
  10.        < property name = "maxActive" value = "${maxActive}" />  
  11.        <!-- 初始化连接数量 -->  
  12.        < property name = "initialSize" value = "${initialSize}" />  
  13.        <!-- 配置获取连接等待超时的时间 -->  
  14.        < property name = "maxWait" value = "${maxWait}" />  
  15.        <!-- 最小空闲连接数 -->  
  16.        < property name = "minIdle" value = "${minIdle}" />    
  17.        <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->  
  18.        < property name = "timeBetweenEvictionRunsMillis" value ="${timeBetweenEvictionRunsMillis}" />  
  19.        <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->  
  20.        < property name = "minEvictableIdleTimeMillis" value ="${minEvictableIdleTimeMillis}" />    
  21.        < property name = "validationQuery" value = "${validationQuery}" />    
  22.        < property name = "testWhileIdle" value = "${testWhileIdle}" />    
  23.        < property name = "testOnBorrow" value = "${testOnBorrow}" />    
  24.        < property name = "testOnReturn" value = "${testOnReturn}" />    
  25.        < property name = "maxOpenPreparedStatements" value ="${maxOpenPreparedStatements}" />  
  26.        <!-- 打开 removeAbandoned 功能 -->  
  27.        < property name = "removeAbandoned" value = "${removeAbandoned}" />  
  28.        <!-- 1800 秒,也就是 30 分钟 -->  
  29.        < property name = "removeAbandonedTimeout" value ="${removeAbandonedTimeout}" />  
  30.        <!-- 关闭 abanded 连接时输出错误日志 -->     
  31.        < property name = "logAbandoned" value = "${logAbandoned}" />  
  32.   </ bean >  

dbconfig.properties

[html]  view plain  copy
  1. url: jdbc:mysql:// localhost :3306/ newm  
  2. driverClassName: com.mysql.jdbc.Driver  
  3. username: root  
  4. password: root  
  5. filters: stat  
  6. maxActive: 20  
  7. initialSize: 1  
  8. maxWait: 60000  
  9. minIdle: 10  
  10. maxIdle: 15  
  11. timeBetweenEvictionRunsMillis: 60000  
  12. minEvictableIdleTimeMillis: 300000  
  13. validationQuery: SELECT 'x'  
  14. testWhileIdle: true  
  15. testOnBorrow: false  
  16. testOnReturn: false  
  17. maxOpenPreparedStatements: 20  
  18. removeAbandoned: true  
  19. removeAbandonedTimeout: 1800  
  20. logAbandoned: true  

web.xml

[html]  view plain  copy
  1. <!-- 连接池 启用 Web 监控统计功能    start-->  
  2.   < filter >  
  3.      < filter-name > DruidWebStatFilter </ filter-name >  
  4.      < filter-class > com.alibaba.druid.support.http.WebStatFilter </ filter-class >  
  5.      < init-param >  
  6.          < param-name > exclusions </ param-name >  
  7.          < param-value > *. js ,*. gif ,*. jpg ,*. png ,*. css ,*. ico ,/ druid /* </ param-value >  
  8.      </ init-param >  
  9.   </ filter >  
  10.   < filter-mapping >  
  11.      < filter-name > DruidWebStatFilter </ filter-name >  
  12.      < url-pattern > /* </ url-pattern >  
  13.   </ filter-mapping >  
  14.   < servlet >  
  15.      < servlet-name > DruidStatView </ servlet-name >  
  16.      < servlet-class > com.alibaba.druid.support.http.StatViewServlet </ servlet-class >  
  17.   </ servlet >  
  18.   < servlet-mapping >  
  19.      < servlet-name > DruidStatView </ servlet-name >  
  20.      < url-pattern > / druid /* </ url-pattern >  
  21.   </ servlet-mapping >  
  22.   <!-- 连接池 启用 Web 监控统计功能    end-->  

访问监控页面: http://ip:port/projectName/druid/index.html

Vue前端项目-系统监控-数据监控 实现效果: 1、前台vue 项目 创建 src / views / monitor / druid / index.vue 页面, 内容如下: <template> <div v-loading="loading" :style="'height:'+ height"> <iframe :src="src" frameborder="no" style="width: 100%;height: 100%" scrolling="auto" /> 阅读详情

相关推荐

史上最全SpringBoot教程,从零开始带你深入♂学习(九)——配置Druid数据源

由于篇幅有限,这里就不一一罗列了,20道常见面试题(含答案)+21条MySQL性能调优经验小编已整理成Word文档或PDF文档还有更多面试复习笔记分享如下《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!” />由于篇幅有限,这里就不一一罗列了,20道常见面试题(含答案)+21条MySQL性能调优经验小编已整理成Word文档或PDF文档[外链图片转存中…(img-XLMsdt5R-1711929544353)]还有更多面试复习笔记分享如下。

2401_83703835的博客 956

java报错:com.alibaba.druid.pool.DruidDataSource.info {dataSource-1} inited

JDBC使用Druid连接池连接数据库的时候,遇到报错:com.alibaba.druid.pool.DruidDataSource.info {dataSource-1} inited,具体报错信息如下: 从网页上报错信息,可以看到是获取驱动名称错误。 排查: 这里使用了连接池工具类 DruidUtils.java 来加载数据库配置文件druid.properties public class DruidUtils { //1.定义成员变量 public static

Java修炼记 5万+

Springboot之Druid配置详解

druid 参数配置详解 - halberd.lee - 博客园 (cnblogs.com)[这里是图片001]https://www.cnblogs.com/halberd-lee/p/11304790.htmlSpringboot中配置Druidmaven依赖 yaml文件配置spring: datasource: # 数据源基本配置 url: jdbc:mysql://localhost:3306/hotel?useUnicode=true&characterEncoding=utf-8&se

m0_67391907的博客 5549

DruidDataSource源码解析

Druid Druid是java语言中最好的数据库连接池之一,经常在项目中使用。本文基于目前最新的版本1.1.6,探索下Druid连接池的实现原理。因为涉及到各种复杂逻辑,暂未想到比较好的图示来描述源码,因此本文更多的是代码+文字,大家见谅哈 首先,提出几个问题,我们带着这几个疑问去学习druid连接池源码 - druid常用的参数 - druid如何创建连接的 - connection

黄小厮的博客 1万+

springmvc 中druid配置

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="username" value="${jdbc.username}"></property> <property name="password" valu...

一阵雄风的博客 2152

DIY T12烙铁头驱动难题:用几个电容二极管,搞定NMOS上管驱动(附Multisim仿真)

本文详细介绍了如何利用电荷泵电路解决DIY T12烙铁头驱动中的NMOS上管驱动难题。通过巧妙组合电容和二极管,构建低成本高效的升压电路,实现栅极高压驱动需求。文章包含具体电路设计、元件选型建议、实际搭建注意事项以及Multisim仿真验证,为电子爱好者提供了一套完整的解决方案。

weixin_33640562的博客 334

Druid配置详解,新手必须读

什么是Druid Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。 Druid也是配置最简单使用最方便的一种连接池。 Druid是阿里巴巴开源平台上的一个项目,整个项目由数据库连接池、插件框架和SQL解析器组成。该项目主要是为了扩展JDBC的一些限制,可以让程序员实现一些特殊的需求,比如向密钥服务请求凭证、统计SQL信息、SQL性能收集、SQL注入检查、SQL...

Lailai Monkey的博客 3万+

STM32F407驱动OV2640摄像头:从SCCB协议到I2C模拟的保姆级避坑指南

本文详细介绍了STM32F407驱动OV2640摄像头的完整流程,重点解析SCCB协议与I2C的关键差异,并提供GPIO模拟实现方案。通过实战案例和调试技巧,帮助开发者避开常见陷阱,实现稳定的图像采集功能。

weixin_28700411的博客 346

druid连接池配置详解_SpringBoot Druid 配置详解

SpringBoot Druid 配置详解 spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver url: jdbc:mysql://${url}:${port}/${数据库名}?useUnicode=true&...

weixin_39751871的博客 1万+

数据科学常见模型总结(二)-倾向性得分匹配模型

PSM的核心思想是从未受干预的用户群体中,找到和干预对象一模一样的用户,这样就可以把因果效应归因到干预上。

wudelong0112的专栏 4894

让 ABAP 开发者也能做出高质量 SAP Fiori:到底需要掌握多少前端知识?

文章摘要: 随着SAP技术演进,ABAP开发者的角色边界正在重构。传统SAP GUI时代的全栈开发模式逐渐转向RAP+Fiori Elements的新范式,其中关键技术变化包括: 开发模式转变:从前后端耦合转向RAP模型驱动开发,通过CDS注解实现UI意图表达 分工优化:Fiori Elements模板处理80%标准UI需求,Flexible Programming Model解决20%差异化需求 效率提升:注解驱动开发可在RAP建模阶段同步定义UI结构,大幅缩短交付周期 工具整合:SAP提供从建模到部署的

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 350

Druid 参数配置详解

Java 程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池。Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0、DBCP 等 DB 池的优点,同时加入了日志监控。Druid 可以很好的监控 DB 池连接和 SQL 的执行情况,天生就是针对监控而生的 DB 连接池。Druid 已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。

程序员子龙 1万+

华为OD机试真题 新系统【查找温度记录统计信息】

华为OD机试 新系统真题【查找温度记录统计信息】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【查找温度记录统计信息】多语言题解。

qq_45776114的博客 489

druid配置详解

德鲁伊驱动详细配置文件

m0_51681861的博客 1579

点云配准3:3d-ndt算法在pcl上的实现以及参数设置

3d-ndt算法在pcl上的使用方法以及参数设置

诺有缸的高飞鸟的博客 7893

全面解读AI Infra:架构、生态与未来趋势

文章摘要 大模型时代下,AI基础设施(AI Infra)成为关键技术基建,涵盖从数据准备到模型服务的全栈技术体系。文章系统解构了AI Infra的四层架构(硬件资源层、资源管理调度层、开发框架层、平台工具层),并分析了全球AI Infra生态图谱,包括云计算巨头、芯片厂商等全栈服务商,以及中国特色的多元竞合格局。通过对比Data Infra与AI Infra的核心差异,指出AI Infra更关注智能应用的规模化与自动化。文章还探讨了从传统数据设施向AI基础设施的转型路径,强调自主可控、软硬协同等发展趋势,为

技术引领业务创新 610

druid mysql配置详解_druid配置详解

java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池。数据库连接池有很多选择,c3p、dhcp、proxool等,druid作为一名后起之秀,凭借其出色的性能,也逐渐印入了大家的眼帘。接下来本教程就说一下druid的简单使用。和dbcp类似,druid的配置项如下配置缺省值说明name配置这个属性的意义在于,如果存在多个数据源,监控的时候可以通过名字来区分开来...

weixin_35705382的博客 2679

黑猫带你学eMMC协议第26篇:eMMC的硬件复位操作(H/W reset)

本文依据eMMC JEDEC5.1及个人工作经验整理而成,如有错误请留言。 文章为个人辛苦整理,付费内容,禁止私自转载。 文章所在专栏:《黑猫带你学:eMMC协议详解》 1 概述 什么是硬件复位? 硬件复位就是使用一个特殊硬件信号(这个信号在RST_n这根实实在在的物理线路上传输)将emmc复位到pre-idle state,而不需要使用cmd0或者power cycle讲emmc复位到pre-idle state。 如何进行硬件复位? 1、设置RST_n_FUNCTION [162]为1,使emm.

黑猫奥利奥的博客 6319

JDBC数据库连接池Druid基本使用和druid配置详解

JDBC数据库连接池Druid基本使用和druid配置详解 数据库连接池是个容器,负责分配、管理数据库连接(Connection) 它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个; 释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏 好处 资源重用 提升系统响应速度 避免数据库连接遗漏 之前我们代码中使用连接是没有使用都创建一个Connection对象,使用完毕就会将其销毁。这样重复创建销毁的过程是特别耗费计算机的性能的及

我要记录学习博客 6049

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

DRUID 连接池的使用、配置详解

DRUID 连接池的使用、配置详解 本篇参考:原文链接 一、DRUID 介绍: DRUID 是阿里巴巴开源平台上一个数据库连接池实现,它结合了 C3P0、DBCP、PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控 DB 池连接和 SQL 的执行情况,可以说是针对监控而生的 DB 连接池(据说是目前最好的连接池,不知道速度有没有 BoneCP 快)。 配置参数: 和其它连接池一样 D...

肖朋伟 1万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Druid的配置详解

druid的配置详解 # MySQL-JDBC 8.0 及以上 #driverClassName=com.mysql.cj.jdbc.Driver # MySQL-JDBC 8.0 以下 #driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://127.0.0.1:3306/test?useSSL=false username=root pa...

qq_39937778的博客 876

Druid配置大全

【代码】Druid配置大全。

Lxn2zh的博客 909

Druid配置详解

Druid配置详解

m0_62036548的博客 1057

druid mysql配置详解_Druid配置详解

配置缺省值说明name配置这个属性的意义在于,如果存在多个数据源,监控的时候可以通过名字来区分开来。如果没有配置,将会生成一个名字,格式是:"DataSource-" + System.identityHashCode(this). 另外配置此属性至少在1.0.5版本中是不起作用的,强行设置name会出错。url连接数据库的url,不同数据库不一样。例如:mysql : jdbc:mysql://...

weixin_35728532的博客 929
上一篇: 连接池 Druid 详细介绍
下一篇: Runtime.addShutdownHook用法
大树叶
博客等级 码龄12年 1171粉丝 664原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值