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

devtools/2024/10/10 14:30:51/

文章目录

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

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

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

引入Druid组件(maven)

<!-- 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.ppmy.cn/devtools/110078.html

相关文章

Redis位图BitMap

一、为什么使用位图&#xff1f; 使用位图能有效实现 用户签到 等行为&#xff0c;用数据库表记录签到&#xff0c;将占用很多存储&#xff1b;但使用 位图BitMap&#xff0c;就能 大大减少存储占用 二、关于位图 本质上是String类型&#xff0c;最小长度8位&#xff08;一个字…

RLC(电阻、电感、电容)

RLC&#xff08;电阻、电感、电容&#xff09; 目录一、两个电阻&#xff08;R1&#xff0c;R2&#xff09;&#xff0c;电容&#xff08;C1&#xff0c;C2&#xff09;的串联/并联公式&#xff1f;二、请画出这个1ms&#xff0c; 1V的Vin脉冲信号在Vout端的大致图像1.电路图2.…

SpringBoot开发——初步了解SpringBoot

文章目录 一、SpringBoot简介1、什么是Spring Boot2、Spring Boot的优点3、Spring Boot功能 二、Spring与Spring Boot对比三、Spring Boot与Spring MVC四、Spring Boot体系结构五、Springboot Initializr1、Spring Initializr2、Spring Initializr模块 一、SpringBoot简介 1、…

SpringMVC基于注解使用:国际化

01-国际化介绍 首先在bootstrap下载个页面 下载后把登录页面的代码粘上去 然后再登录页面代码上有些超链接需要再spring-mvc.xml里面配置下&#xff0c;登录页面才能正常显示 配置静态资源 国际化-根据浏览器语言国际化 现在是中文的情况&#xff0c;要改为英文 1.配置下属…

VScode与gitlab关联

要将VS Code与GitLab关联&#xff0c;您需要按照以下步骤进行操作&#xff1a; 在VS Code中安装Git插件。在VS Code左边的侧边栏中&#xff0c;点击扩展的图标&#xff08;四个正方形&#xff09;&#xff0c;然后搜索并安装"Git"插件。 在GitLab上创建一个新的空项…

谷粒商城の缓存篇

文章目录 前言一、本地缓存和分布式缓存1.本地缓存2.分布式缓存 二、项目实战1.配置Redis2.整合业务代码2.1 缓存击穿2.2 缓存雪崩2.3 缓存穿透2.4 业务代码1.0版2.5 分布式锁1.0版2.6 分布式锁2.0版2.7 Spring Cache及缓存一致性问题2.7.1 Spring Cache2.7.2 缓存一致性问题2.…

《人工智能安全治理框架》1.0版

人工智能是人类发展新领域&#xff0c;给世界带来巨大机遇&#xff0c;也带来各类风险挑战落实《全球人工智能治理倡议》&#xff0c;遵循“以人为本、智能向善”的发展方向&#xff0c;为推动政府、国际组织、企业、科研院所、民间机构和社会公众等各方&#xff0c;就人工智能…

16 Python的包以及import和from的使用

本篇是 Python 系列教程第 16 篇&#xff0c;更多内容敬请访问我的 Python 合集 1 创建包 创建文件夹&#xff1a;首先你需要创建一个文件夹作为包的容器。添加 __init__.py文件&#xff1a; 在这个文件夹内需要有一个特殊的文件叫做__init__.py。这个文件可以为空&#xff0c…