当前位置: 首页 > news >正文

springboot基础-Druid数据库连接池使用

文章目录

      • 引入Druid组件(maven)
      • 配置数据源
      • Druid配置项
        • 1. 数据源配置
        • 2. 监控配置
        • 3. 安全配置
        • 4. SQL拦截配置
      • 示例配置
      • 相关地址

Druid是阿里巴巴开源的一个高性能的Java数据库连接池组件,它提供了强大的监控统计功能和工具支持。Druid不仅可以作为一个数据库连接池,还提供了SQL解析、SQL统计、SQL慢SQL日志等功能。

下面是对Druid配置的一些关键点的详细介绍:

引入Druid组件(maven)

  • springboot
<!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter -->
<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.23</version>
</dependency>
  • 单独使用
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.23</version>
</dependency>

配置数据源

Druid配置项

1. 数据源配置

Druid数据源的基本配置项包括:

  • driverClassName:指定JDBC驱动的全限定名。
  • url:数据库连接的URL。
  • username:数据库用户名。
  • password:数据库密码。
  • initialSize:初始化时建立物理连接的个数。
  • minIdle:最小空闲连接数。
  • maxActive:最大活跃连接数。
  • maxWait:获取连接时的最大等待毫秒数,如果超过这个时间还没有可用的连接,则抛出异常。
  • timeBetweenEvictionRunsMillis:两个连接池维护线程检查之间的时间间隔。
  • minEvictableIdleTimeMillis:一个连接至少停留在空闲状态的时间才有可能被驱逐。

空闲连接释放时间

  • validationQuery:用来验证连接有效性的SQL语句。

很重要, 默认为null, 只有开启了才能使用连接有效性校验功能

  • testWhileIdle:申请连接前进行验证,如果为true,则进行空闲连接的有效性校验。

在minEvictableIdleTimeMillis时间内不再执行校验, 超出后校验

  • testOnBorrow:申请连接时进行验证。

开启时影响性能,所以不建议开启

  • testOnReturn:归还连接时进行验证。

开启时影响性能, 不建议开启

  • poolPreparedStatements:是否缓存PreparedStatement,默认为false。
  • maxPoolPreparedStatementPerConnectionSize:每个连接上PreparedStatement的最大数量。
  • filters:配置监控统计拦截的filters,常用的有stat,log4j,wall等。
2. 监控配置

Druid提供了一个web控制台来监控连接池的状态,可以通过以下配置启用:

  • webStatFilter.enabled=true:开启Web监控页面。
  • statViewServlet.enabled=true:开启监控页面。
  • statViewServlet.urlPattern=/druid/*:设置监控页面的路径。
  • statViewServlet.resetEnabled=false:是否允许重置统计数据。
3. 安全配置

为了保护监控页面的安全,可以配置登录账号和密码:

  • statViewServlet.loginUsername=admin
  • statViewServlet.loginPassword=admin
4. SQL拦截配置

Druid支持SQL拦截,可以记录SQL执行情况,用于调试和性能优化:

  • filters=stat,wall,slf4j:配置三个过滤器,分别是统计、防火墙、日志。
  • wallEnabled=true:启用SQL防火墙。
  • wall.rejectUrl=/druid/sql.html:SQL防火墙拒绝后重定向的地址。
  • wall.sqlStatEnabled=true:开启SQL统计。
  • wall.logSlowSql=true:记录慢SQL。
  • wall.logSlowSqlMs=2000:慢SQL的阈值,单位是毫秒。

示例配置

  • 参考配置:
 <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <property name="url" value="${jdbc_url}" /><property name="username" value="${jdbc_user}" /><property name="password" value="${jdbc_password}" /><property name="filters" value="stat" /><property name="maxActive" value="20" /><property name="initialSize" value="1" /><property name="maxWait" value="6000" /><property name="minIdle" value="1" /><property name="timeBetweenEvictionRunsMillis" value="60000" /><property name="minEvictableIdleTimeMillis" value="300000" /><property name="testWhileIdle" value="true" /><property name="testOnBorrow" value="false" /><property name="testOnReturn" value="false" /><property name="poolPreparedStatements" value="true" /><property name="maxOpenPreparedStatements" value="20" /><property name="asyncInit" value="true" /></bean>

以上配置仅作为参考,实际使用时应根据具体需求调整各项参数。

相关地址

  • druid官网地址
  • druid开源代码github地址
  • druid中文wiki地址
  • druid数据源配置推荐
  • druid数据源配置全量属性
http://www.lryc.cn/news/434749.html

相关文章:

  • C语言文件操作全攻略:从打开fopen到读写r,w,一网打尽
  • 【0328】Postgres内核之 “User ID state”
  • VisualStudio环境搭建C++
  • linux 文件压缩并且切割压缩
  • 支持iPhone 16新品预售,饿了么同步上线专人配送等特色服务
  • 低光增强效果展示
  • 李诞-2021.8脱口秀工作手册-11-pitch your idea把一个想法扎进别人脑子里;专业,做足准备,给选择option!
  • vue3 自定义指令 directive
  • 为什么腾讯难以再现《黑神话:悟空》这样的游戏大作?
  • C# WPF燃气报警器记录读取串口工具
  • 【IEEE独立出版 | 往届快至会后2个月检索,刊后1个月检索】2024年第四届电子信息工程与计算机科学国际会议(EIECS 2024)
  • FPGA实现串口升级及MultiBoot(三)FPGA启动加载方式
  • Linux驱动(六):Linux2.6驱动编写之平台设备总线
  • 回溯——11.重新安排行程
  • python+pytest+request 接口自动化测试
  • 《JavaEE进阶》----10.<SpringMVC应用分层:【三层架构】>
  • 【网络】网络通信的传输方式
  • 数据仓库理论知识
  • 容易中、见刊快的6本医学期刊推荐!
  • nnunetv2系列:使用默认的预测类推理2D数据
  • 伺服电机如何计算扭矩——看这一篇就够了
  • 数据库C语言删除修改和输出
  • 插槽slot
  • 交换技术是一种在计算机网络和通信系统中广泛应用的关键技术,它主要通过交换设备(如交换机、路由器等)实现数据的转发和传输
  • 数仓建模:数仓设计中的10个陷阱
  • Vue如何将网页转换成图片或PDF并上传
  • 【引领数据分析革命】TaskWeaver框架全景解读与入门指南!
  • LabVIEW灵活集成与调试的方法
  • 网络药理学:分子对接之二:PDB数据库的使用(已知PDB ID)、PubChem数据库如果没有3D结构
  • JS获取页面中video标签视频的封面和时长