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


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>

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

相关地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

问道飞鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值