使用druid的好处
- Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。
- 替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。
- 可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。
- 数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。
- SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。
- 扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter机制,很方便编写JDBC层的扩展插件。
springboot集成druid步骤
引入依赖
<properties>
<druid-spring-boot-starter.version>1.1.18</druid-spring-boot-starter.version>
</properties>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid-spring-boot-starter.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
在yml配置文件中添加配置
spring:
application:
name: mybatisplus
datasource:
type: com.alibaba.druid.pool.DruidDataSource
#driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/springboot?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2b8
username: root
#使用druid可以进行密码加密
password: 123456
druid:
#初始连接数大小
initial-size: 5
#最大连接数
max-active: 20
#最小空闲连接数
min-idle: 5
#获取连接等待超时的时间(毫秒)
max-wait: 60000
#打开 PSCache,并且指定每个连接上 PSCache 的大小
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
#验证查询
validation-query: SELECT 1 FROM DUAL
# 获取连接时检测
test-on-borrow: false
#空闲时检测
test-on-return: false
#空闲时测试
test-while-idle: true
#配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位毫秒
time-between-eviction-runs-millis: 60000
#配置一个连接在池中最小生存时间
min-evictable-idle-time-millis: 300000
#配置监控统计拦截的 Filter,去掉后监控界面 SQL 无法统计,wall 用于防火墙
filters: config,stat #wall,log4j
remove-abandoned: true
#配置 DruidStatFilter
web-stat-filter:
enabled: true
url-pattern: /api/*
exclusions:
session-stat-enable: true
session-stat-max-count: 1000
profile-enable: true
#配置 DruidStatViewServlet
stat-view-servlet:
enabled: true
url-pattern: /druid/*
#启用 HTML 中 Reset All 按钮,false为禁用
reset-enable: true
#登录用户名/密码
login-username: admin
login-password: admin
# IP 白名单,没有配置或者为空,则允许所有访问
allow:
# IP 黑名单,若白名单也存在,则优先使用
deny:
访问http://localhost:8080/druid/即可监控数据库
常见问题
如果遇到java.sql.SQLFeatureNotSupported问题,版本问题,提升druid版本以支持jdk8中的新类型,如ZonedDateTime,LocalDateTime等
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid-spring-boot-starter.version}</version>
<exclusions>
<exclusion>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.22</version>
</dependency>