Druid使用详解
druid
阿里云计算平台DataWorks(https://help.aliyun.com/document_detail/137663.html) 团队出品,为监控而生的数据库连接池
项目地址:https://gitcode.com/gh_mirrors/druid/druid
免费下载资源
·
一、Druid介绍
Druid 是一个强大的数据库连接池和监控库,它提供了比常见的数据库连接池更多的功能,如连接池监控、统计SQL信息、SQL 监控、防 SQL 注入等。在 Spring Boot 项目中,Druid 可以很容易地集成并进行配置。
二、Druid在SpringBoot项目中的配置
1、引入 Druid 依赖
首先,要在项目的构建文件(通常是 pom.xml)中添加 Druid 的依赖。
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.6</version>
</dependency>
2、 配置数据源
在 Spring Boot 项目的配置文件(application.properties 或 application.yml)中,配置数据源的相关属性。以下是一个示例配置:
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
username: myuser
password: mypassword
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
# Druid 连接池的基本属性
druid:
initial-size: 5 # 连接池初始化时创建的连接数
min-idle: 5 # 连接池中保持的最小空闲连接数
max-active: 20 # 连接池中允许的最大活动连接数
max-wait: 60000 # 获取连接时的最大等待时间,超过此时间将抛出异常
time-between-eviction-runs-millis: 60000 # 两次检查连接的时间间隔
min-evictable-idle-time-millis: 300000 # 连接最小空闲时间,超过这个时间的连接将被回收
remove-abandoned: true # 是否自动回收超时连接
remove-abandoned-timeout-millis: 1800 # 自动回收超时连接的等待时间
Druid连接池的主要配置项
配置项 | 描述 |
---|---|
initial-size | 连接池初始化时创建的连接数。 |
min-idle | 连接池中保持的最小空闲连接数。 |
max-active | 连接池中允许的最大活动连接数。 |
max-wait | 获取连接时的最大等待时间,超过此时间将抛出异常。 |
time-between-eviction-runs-millis | 两次检查连接的时间间隔,单位为毫秒。 |
min-evictable-idle-time-millis | 连接最小空闲时间,超过这个时间的连接将被回收。 |
remove-abandoned | 是否自动回收超时连接。 |
remove-abandoned-timeout-millis | 自动回收超时连接的等待时间。 |
pool-prepared-statements | 是否缓存预处理语句。 |
filters | 连接池过滤器,用于配置监控和防火墙。 |
max-pool-prepared-statement-per-connection-size | 同一连接上允许的最大预处理语句数目。 |
use-global-data-source-stat | 是否开启全局统计信息。 |
connection-properties | 连接属性,用于配置一些特定的连接属性,如统计 SQL 和慢 SQL 阈值。 |
3、配置 Druid 监控
Druid 提供了 Web 监控页面,可以查看连接池的状态和 SQL 监控等信息。要启用监控,需要添加以下配置:
# 配置 Druid 监控
spring:
datasource:
druid:
stat-view-servlet:
enabled: true
url-pattern: /druid/*
web-stat-filter:
enabled: true
url-pattern: /*
# 监控用户名和密码,用于登录监控页面
username: admin
password: admin
上述配置中,启用了 Druid 的监控功能,并配置了监控页面的访问路径、用户名和密码。
4、Druid配置类
添加 DruidDataSource 组件到容器中,并绑定属性
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import javax.sql.DataSource;
import java.sql.SQLException;
@Configuration
public class DruidConfig {
// 将配置文件中的 druid 数据源属性与 DruidDataSource 绑定
@Bean
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource druidDataSource() {
return new DruidDataSource();
}
// 配置 Druid 监控页面的 Servlet
@Bean
public StatViewServlet statViewServlet() {
return new StatViewServlet();
}
// 配置 Druid 监控页面的 Filter
@Bean
public WebStatFilter webStatFilter() {
WebStatFilter filter = new WebStatFilter();
filter.setProfileEnable(true);
return filter;
}
// 配置 Druid 数据源的监控信息
@Bean
@Primary
public DruidDataSourceStatInterceptor druidDataSourceStatInterceptor() {
return new DruidDataSourceStatInterceptor();
}
// 配置 Druid 数据源的监控信息
@Bean
public JdkRegexpMethodPointcut druidStatPointcut() {
JdkRegexpMethodPointcut pointcut = new JdkRegexpMethodPointcut();
pointcut.setPatterns("your.package.*"); // 替换成你的项目包名
return pointcut;
}
// 配置 Druid 数据源的监控信息
@Bean
public DefaultPointcutAdvisor defaultPointcutAdvisor() {
DefaultPointcutAdvisor advisor = new DefaultPointcutAdvisor();
advisor.setPointcut(druidStatPointcut());
advisor.setAdvice(druidDataSourceStatInterceptor());
return advisor;
}
}
5、使用 Druid 连接池
Druid 数据源已经配置完成,现在就可以在项目中使用它来获取数据库连接。通常情况下,Spring Boot 会自动为你管理连接池,你只需要注入 DataSource 并使用它即可。
GitHub 加速计划 / druid / druid
5
3
下载
阿里云计算平台DataWorks(https://help.aliyun.com/document_detail/137663.html) 团队出品,为监控而生的数据库连接池
最近提交(Master分支:5 个月前 )
1d5d5740 - 1 天前
75ea4f72 - 2 天前
更多推荐
已为社区贡献9条内容
所有评论(0)