Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能
Spring Boot整合Druid方式有两种1、自定义方式 2、引入 starter 方式
一、引入依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.7</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>com.ld</groupId>
<artifactId>druid-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<!--web开发依赖 非必须-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--druid starter 这里要注意 -->
<!--原来的druid-spring-boo-starter对于spring boot3的支持不够 需要引入以下依赖 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-3-starter</artifactId>
<version>1.2.20</version>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<!--jdbc驱动-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--使用 log4j2 记录日志-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
二、yml文件配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
druid:
publicKey: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAIA2UGZpHzAZUqXTrxVp1Dh6WDl/EGRQwyu/oDoWs0E7TTKWIKfpf4mVf5lXWi0ijCt00TIX15h979aq1sX2dwkCAwEAAQ==
# 数据库
url: XXXXXX
username: root
password: XXXX
driver-class-name: com.mysql.cj.jdbc.Driver
# 连接池-初始化大小
initial-size: 10
# 连接池-最大连接数
max-active: 100
# 最大等待时间
max-wait: 60000
# 连接池-最小空闲数
min-idle: 10
# 检测空闲连接
test-while-idle: true
# 最小空闲时间
min-evictable-idle-time-millis: 300000
connection-properties: config.decrypt=true;config.decrypt.key=${spring.datasource.druid.publicKey}
# 可以把这个数值配置大一些,比如说100 maxOpenPreparedStatements: 20 # 连接池中的minIdle数量以内的连接,空闲时间超过minEvictableIdleTimeMillis,则会执行keepAlive操作
keepAlive: true # Spring 监控,利用aop 对指定接口的执行时间,jdbc数进行记录
aop-patterns: "com.ld.druid.dao.*" ########### 启用内置过滤器(第一个 stat必须,否则监控不到SQL)##########
filter:
# 开启druiddatasource的状态监控
wall:
config:
alter-table-allow: false
drop-table-allow: false
stat:
db-type: mysql
# 开启慢sql监控,超过2s 就认为是慢sql,记录到日志中
log-slow-sql: true
slow-sql-millis: 2000 # 日志监控,使用slf4j 进行日志输出
slf4j:
statement-log-error-enabled: true
statement-create-after-log-enabled: false
statement-close-after-log-enabled: false
result-set-open-after-log-enabled: false
result-set-close-after-log-enabled: false
web-stat-filter:
enabled: true # 启动 StatFilter
url-pattern: /* # 过滤所有url
exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*" # 排除一些不必要的url
session-stat-enable: true # 开启session统计功能
session-stat-max-count: 1000 # session的最大个数,默认100
########## 配置StatViewServlet(监控页面),用于展示Druid的统计信息 ##########
stat-view-servlet:
enabled: true # 启用StatViewServlet
#url-pattern: / # 访问内置监控页面的路径,内置监控页面的首页 是/druid/index.html
reset-enable: false # 不允许清空统计数据,重新计算
login-username: root # 配置监控页面访问密码
login-password: 123
allow: 127.0.0.1 # 允许访问的地址,如果allow没有配置或者为空,则允许所有访问
deny:
三、访问地址
系统启动,监控访问地址为http://localhost:8080/druid/index.html