1 前言
Java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池。
说到数据库连接池大家可能首先会想到C3P0,DBCP等相关。今天给大家介绍的是由国产(阿里)的一种连接池技术:Druid
2 Druid介绍
Druid 是阿里巴巴开源平台上一个数据库连接池实现,结合了 C3P0、DBCP 等 DB 池的优点,同时加入了日志监控。它可以很好的监控 DB 池连接和 SQL 的执行情况,天生就是针对监控而生的 DB 连接池。
Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。
3 集成SpringBoot使用Druid
我们使用SpringBoot项目为例,简单讲解如何使用使用Druid
创建SpringBoot项目
3.1 pom引入依赖
第一步:在pom.xml中引入druid官方提供的Spring Boot Starter封装。
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.21</version> </dependency>
3.2 配置基本信息
第二步:在application.properties中配置数据库连接信息
Druid的配置都以spring.datasource.druid作为前缀
注意url(不同的数据以及版本对应的url不一致)以及用户名和密码
spring.datasource.druid.url=jdbc:mysql://localhost:3306/dbtest spring.datasource.druid.username=root spring.datasource.druid.password=root spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver
3.3 配置Druid的连接池
与Hikari一样,要用好一个数据源,就要对其连接池做好相应的配置,比如下面这样:
spring.datasource.druid.initialSize=10 spring.datasource.druid.maxActive=20 spring.datasource.druid.maxWait=60000 spring.datasource.druid.minIdle=1 spring.datasource.druid.timeBetweenEvictionRunsMillis=60000 spring.datasource.druid.minEvictableIdleTimeMillis=300000 spring.datasource.druid.testWhileIdle=true spring.datasource.druid.testOnBorrow=true spring.datasource.druid.testOnReturn=false spring.datasource.druid.poolPreparedStatements=true spring.datasource.druid.maxOpenPreparedStatements=20 spring.datasource.druid.validationQuery=SELECT 1 spring.datasource.druid.validation-query-timeout=500 spring.datasource.druid.filters=stat
这时候就可以启动项目,看看jar包以及配置是否正常
如果报以下的错误
Caused by: java.lang.ClassNotFoundException: org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType
可以加上这个依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> <version>2.1.3.RELEASE</version> </dependency>
这时候貌似启动了,但是实际上启动失败了
因为:
Closing JPA EntityManagerFactory for persistence unit 'default’错误导致springboot启动后终止
解决这个问题,需要我们去使用一个包
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.0.1.RELEASE</version> </dependency>
再次重启,解决问题
到这一步,就已经完成了将Spring Boot的默认数据源配置成Druid的所有操作。
3.4 配置Druid监控
既然用了Druid,那么对于Druid的监控功能怎么能不用一下呢?下面就来再进一步做一些配置,来启用Druid的监控。
3.4.1 在pom.xml中引入监控依赖
第一步:在pom.xml中引入spring-boot-starter-actuator模块
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
3.4.2 配置文件中添加Druid的监控配置。
主要用于开启stat监控统计的界面以及监控内容的相关配置
spring.datasource.druid.stat-view-servlet.enabled=true # 访问地址规则 spring.datasource.druid.stat-view-servlet.url-pattern=/druid/* # 是否允许清空统计数据 spring.datasource.druid.stat-view-servlet.reset-enable=true # 监控页面的登录账户 spring.datasource.druid.stat-view-servlet.login-username=admin # 监控页面的登录密码 spring.datasource.druid.stat-view-servlet.login-password=admin