# druid - 快速入门
# 1. 连接池简介
连接池:
- 不常用: c3p0 / dbcp / tomca-jdbc
- 主流: hikariCP / druid
druid:
- 德鲁伊 / 德鲁的
- 为监控而生的数据库连接池
文档:
- https://github.com/alibaba/druid/wiki/
- https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
# 依赖
<!-- springboot 2.7.5 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.5</version>
<relativePath/>
</parent>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.13</version>
</dependency>
# 连接池配置
spring:
datasource:
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ssm_db
username: root
password: 123456
# 初始化时建立的物理连接的个数
initialSize: 5
# 连接池包含连接的最大数量
maxActive: 20
# 获取连接时,(暂时没有连接可用时)最大等待时间(ms)
maxWait: 60000
# 连接池至少存在的连接数
minIdle: 1
# 申请连接时,是否执行 validationQuery 检查连接的有效性,影响性能
testOnBorrow: false
# 归还连接时,是否执行 validationQuery 检查连接的有效性,影响性能
testOnReturn: false
# mysql: show variables like '%timeout%'
# 当 连接长时间(默认 8h)不使用时,数据库会主动关闭连接
# 连接保持空闲而不被销毁的最小时间
# 单位 ms,默认 30 min
minEvictableIdleTimeMillis: 1800000
# 连接保持空闲而不被销毁的最大时间
# 单位 ms,默认 7 h
maxEvictableIdleTimeMillis: 25200000
# 销毁线程是另一个线程,该配置决定销毁线程运行周期
# 单位 ms,默认 1 min
timeBetweenEvictionRunsMillis: 60000
# 申请连接时,如果 空闲时间 > timeBetweenEvictionRunsMillis,则执行 validationQuery 检查连接是否有效
# 类似 testOnBorrow,但对性能的影响想对较小
testWhileIdle: true
# 通过执行指定 sql 检测连接是否有效
validationQuery: select 1
# 监控配置
spring:
datasource:
druid:
# ...
# 启用 druid 监控,并设置访问路径
stat-view-servlet:
enabled: true
url-pattern: /druid/*
filter:
# 页签: SQL 监控
# 作用: 主要用于查看执行了哪些 SQL 语句(执行耗时,次数)
# 文档: https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatFilter
stat:
enabled: true
merge-sql: true
log-slow-sql: true
# 慢SQL,默认 3 秒
slow-sql-millis: 3000
# 页签: SQL 防火墙
# 作用: 按照配置,检查 SQL 语句是否合法,比如 deleteAllow(是否允许执行DELETE语句)
# 文档: https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE-wallfilter
wall:
enabled: true
db-type: mysql
# 文档: 打印日志
# 作用: https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_LogFilter
# 配置: logback-spring.xml
slf4j:
enabled: true
statement-executable-sql-log-enable: true
# 页签: Web 应用、URI 监控、Session监控
# 作用: 针对 web 的监控
# 文档: https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_%E9%85%8D%E7%BD%AEWebStatFilter
web-stat-filter:
enabled: true
session-stat-enable: true
# principal-session-name: username.druid
url-pattern: /*
exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
profile-enable: true
# 页签: Spring 监控
aop-patterns: com.labwind.modules.*.service.*
logback-spring.xml:
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="10 seconds">
<contextName>logback-spring</contextName>
<property name="LOG_PATTERN"
value="%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}|${PID:- }|%level|${LOG_LEVEL_PATTERN:-%5p}|%t|%-40.40logger{39}: %msg%n"/>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<!-- 对日志进行格式化 -->
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
<logger name="druid.sql" level="debug" additivity="false">
<appender-ref ref="CONSOLE" />
</logger>
<root level="info">
<appender-ref ref="CONSOLE" />
</root>
</configuration>
上一篇: 下一篇:
本章目录