面向小白的SpringBoot配置Druid连接池

243 阅读2分钟

这是我参与2022首次更文挑战的第4天,活动详情查看:2022首次更文挑战

前两天我们搞了数据源,但是还不够啊,一个优秀的java程序员还要能保证连接池的供应,连接池就是管理连接的池化技术,国内比较好用的是Druid连接池,那我们今天来学习一下。

Druid连接池

学习连接池之前,首先了解一下,不然很难有动力继续看下去(没有价值的东西是无法吸引我们的),那这个连接池的价值在哪呢?先看看官方是怎么吹的?

Druid连接池是阿里巴巴开源的数据库连接池项目。Druid连接池为监控而生,内置强大的监控功能,监控特性不影响性能。功能强大,能防SQL注入,内置Loging能诊断Hack应用行为。

划重点,兄弟们:监控还不影响性能,防Sql注入,甚至还出了个竞品分析,不光吹的好,还有理有据。还有不学的理由嘛?显然没有。

搞Druid配置

spring.datasource.druid.initial-size=5
spring.datasource.druid.max-active=5
spring.datasource.druid.min-idle=5
spring.datasource.druid.filters=conn,config,stat,slf4j
spring.datasource.druid.filter-class-names=geektime.spring.data.druiddemo.filter.ConnectionLogFilter

spring.datasource.druid.filter.config.enabled=true
spring.datasource.druid.test-on-borrow=false
spring.datasource.druid.test-while-idle=true
spring.datasource.druid.test-on-return=false
spring.datasource.druid.max-wait=60000

配置有点多,但我们不要怕,一个个看一下。

initial-size:初始化的连接数量,连接池初始化完成之后进行连接的初始化操作,你得告诉连接池搞多少个连接用?

max-active:最大连接数,包括正在使用的连接和正在创建的连接再加上空闲连接,连接是数据库很宝贵的资源,所以你得告诉连接池这个应用最多用多少连接?

min-idle:最小空闲连接,控制空闲连接的数量,便于应对突发情况。

filters:这个就是德鲁伊的过滤器了,内置的配置即可用。

filter-class-names:过滤器支持扩展。

test-on-borrow:判断连接是否可用,谨慎开启,高并发场景下影响性能

test-while-idle:判断连接是否处于空闲状态,如果是证明可用,优先级在test-on-borrow之后

test-on-return:归还连接时,判断是否可用

max-wait:获取连接的最大超时时间

timeBetweenEvictionRunsMillis:间隔多久才进行一次检测,检测需要关闭的空闲连接,与这个最小空闲连接一起发挥作用

这些应该差不多够玩了,再加上原来数据库的基础配置

注意

配置的时候要把默认的连接池排除掉,不然不生效

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-jdbc</artifactId>
   <exclusions>
      <exclusion>
         <groupId>com.zaxxer</groupId>
         <artifactId>HikariCP</artifactId>
      </exclusion>
   </exclusions>
</dependency>