Spring Boot 2.0默认连接池为HikariCP,一款号称高性能的连接池。如没特殊要求使用默认连接池就可以,那么我们为什么要使用Druid呢。
- Druid也是高性能的, 业界有很多实践
- Druid提供很多强大的功能,比如监控,黑白名单,密码加密等
注 HikariCP 基于spring boot 的metric功能,结合prometheus + grafana也可以实现监控
下面记录下工作中用到的监控和密码加密功能:
使用版本:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.22</version>
</dependency>
-
密码加密
第一步使用druid jar包提供的加密功能进行密码加密
#进入到druid jar包目录,执行如下命令: root为要加密的密码
java -cp druid-1.0.29.jar com.alibaba.druid.filter.config.ConfigTools root
#执行结果
privateKey:MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEApi859CGNz0R5LBUkiRSepo5c4YBZZS/PNGPCUSIA0pd9Tjb7IHMdJavhpRscdFdYdS5RhwtkCuVjooUj0UaCewIDAQABAkArcds3vHHjRqZa5OgZQh+7sSoM9c3pCxejPZU2Oqp2YyDo63nIooTU8/Pc+uxhbBpDelDugP8mH0tgPGVGtkwRAiEA8mpCLpzsGiFZsaeHVplwujGT0MhvQdcfXAQya6bXqSkCIQCvf1i0fEp9caeCM7cLnR+r0pqhmsPqCKUAK2DYyEkvAwIhAOIP7YACnrsPdtGRZUiA9vrr2OjOwdIohvoMf+icQmlhAiBC+mMsXtM/FQVNF9egQxM3TGVfj+V9iFcQvX10vtvPaQIgQIWoMuOp0pnX9bozIq7ERoXg3PNVYkJpIoKNY9RPjag=
publicKey:MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKYvOfQhjc9EeSwVJIkUnqaOXOGAWWUvzzRjwlEiANKXfU42+yBzHSWr4aUbHHRXWHUuUYcLZArlY6KFI9FGgnsCAwEAAQ==
password:ZWIqZ8YP+e6LKDIR2pkrH3ucyAsLk00s4r3AcnJOeEGB4agUMZkegUK7w4Y76PBNYQxXx0nEGe7PMn75Q5Q/qQ==
第二步进行yaml文件配置
datasource:
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false
username: root
# 第一步生成的密码
password: ZWIqZ8YP+e6LKDIR2pkrH3ucyAsLk00s4r3AcnJOeEGB4agUMZkegUK7w4Y76PBNYQxXx0nEGe7PMn75Q5Q/qQ==
# 第一步生成的publicKey
public-key: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKYvOfQhjc9EeSwVJIkUnqaOXOGAWWUvzzRjwlEiANKXfU42+yBzHSWr4aUbHHRXWHUuUYcLZArlY6KFI9FGgnsCAwEAAQ==
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
druid:
# 开启config的filter
filters: config
# 设置启用秘密,以及密钥key
connection-properties:config.decrypt=true;config.decrypt.key=${spring.datasource.public-key}
第三步启动项目测试是否成功
-
开启监控日志
配置文件:
datasource:
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
druid:
# 扩展插件:stat监控统计,wall防SQL注入等
filters: stat,wall
web-stat-filter:
# 是否启用统计监控,可进行添加配置进行详细控制
enabled: true
stat-view-servlet:
# 开启监控页面
enabled: true
# 页面登录账号密码
login-username: test
login-password: test
# 运行访问的白名单,不设置任何可访问,必须配置。如不配置只可单机访问
allow:
# 黑名单
deny:
connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
use-global-data-source-stat: true
启动项目后访问:http://localhost:8080/druid/login.html
输入配置文件设置的账号密码,即可进入查看各种监控数据