今天分享一篇关于druid数据库连接池的使用
开发环境是springboot,springboot默认的数据库连接池是HikariDataSource,据官方所说它很快,但是有多快我没去测试过;而druid集成了c3p0,dbcp等连接池的优点,同时支持日志监控,两个各有所长,具体的使用还是根据需求。话不多说,开始搞事。
druid是阿里巴巴开源的连接池,首先导入jar包,版本根据需要去选择
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.23</version>
</dependency>
然后在配置文件中进行配置,首先不配置druid,先看看springboot默认的连接池
spring:
# 数据库配置,其余配置请自己补全
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url:
password:
username:
先做个对比测试,写个测试类来测试连接池,根据输出 “class com.zaxxer.hikari.HikariDataSource” 获取到连接池是 “HikariDataSource”
@Autowired
private DataSource dataSource;
@Test
public void datasourceTest() throws Exception {
//查看默认数据源
System.out.println(dataSource.getClass());
//获取数据库连接
Connection connection = dataSource.getConnection();
//关闭连接
connection.close();
}
接下来配置druid连接池,使用测试方法得到了连接池是 “class com.alibaba.druid.pool.DruidDataSource”
spring:
# 数据库配置,其余配置请自己补全
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url:
password:
username:
# 指定连接池类型
type: com.alibaba.druid.pool.DruidDataSource
实际上,不管是哪种连接池,它的底层永远是jdbc;然后开始配置druid的配置,简单的写几个,其他的配置可以参考https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
spring:
# 数据库配置,其余配置请自己补全
datasource:
type: com.alibaba.druid.pool.DruidDataSource
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
initial-size: 10
min-idle: 100
max-active: 1000
max-wait: 60000
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
test-while-idle: true
test-on-borrow: false
test-on-return: false
filter:
stat:
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: false
enabled: true
wall:
config:
multi-statement-allow: true
关于druid的配置就这些,接下来说一个druid最重要的配置:监控功能,在druid的配置中增加下面的配置
# 监控
stat-view-servlet:
enabled: true
url-pattern: /druid/*
allow:
deny:
# 用户名(自定义)
login-username: admin
# 密码 (自定义)
login-password: admin
然后通过浏览器去访问http://localhost:8080/druid,登录的用户名和密码在配置时就配置了,直接登录即可,这个页面包含了druid的核心功能,可以查看关于druid对数据库的配置监控
传送门:
druid配置:https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter