druid数据库连接池配置代码
时间: 2025-04-04 10:06:02 浏览: 25
### Druid 数据库连接池配置代码示例
以下是基于 Java 的 Druid 数据库连接池的典型配置代码示例。此示例展示了如何通过属性文件或手动编码的方式设置 Druid 连接池。
#### 使用 Properties 文件配置 Druid
可以通过 `Properties` 类加载外部配置文件来初始化 Druid 数据源[^1]:
```java
import com.alibaba.druid.pool.DruidDataSource;
import java.sql.Connection;
public class DruidConfigExample {
public static void main(String[] args) throws Exception {
DruidDataSource dataSource = new DruidDataSource();
// 设置基本数据库连接参数
dataSource.setUrl("jdbc:mysql://localhost:3306/testdb");
dataSource.setUsername("root");
dataSource.setPassword("password");
// 初始化连接数
dataSource.setInitialSize(5);
// 最大活跃连接数
dataSource.setMaxActive(20);
// 最小闲置连接数
dataSource.setMinIdle(5);
// 获取连接超时时间(毫秒)
dataSource.setMaxWait(60000);
// 测试连接的有效性 SQL
dataSource.setValidationQuery("SELECT 1");
try (Connection conn = dataSource.getConnection()) {
System.out.println("Database connection established.");
}
}
}
```
上述代码片段设置了 Druid 数据源的核心参数,例如最大活动连接数、最小空闲连接数以及获取连接的最大等待时间等[^1]。
#### 基于 Spring Boot 的 Druid 配置
如果项目使用的是 Spring Boot,则可以更方便地集成 Druid 并完成其配置[^2]:
在 `application.properties` 或 `application.yml` 中定义如下内容:
##### application.properties 示例:
```properties
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=password
# Druid 特定配置
spring.datasource.druid.initial-size=5
spring.datasource.druid.max-active=20
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-wait=60000
spring.datasource.druid.validation-query=SELECT 1
spring.datasource.druid.test-on-borrow=true
spring.datasource.druid.test-on-return=false
spring.datasource.druid.test-while-idle=true
```
以上配置项涵盖了常见的性能优化选项,如测试连接有效性、控制连接池大小等功能[^2]。
#### 手动创建数据源并监控统计功能
Druid 提供了强大的监控能力,下面是一个简单的例子展示如何启用内置的 StatFilter 和 Web 控制台支持[^3]:
```java
import com.alibaba.druid.filter.stat.StatFilter;
import com.alibaba.druid.wall.WallFilter;
import com.alibaba.druid.support.http.WebStatFilter;
import javax.servlet.Filter;
public class DruidMonitorSetup {
public Filter setupWebStatFilter() {
WebStatFilter webStatFilter = new WebStatFilter();
// 定义需要过滤的 URL 模式
webStatFilter.setExclusions("*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
return webStatFilter;
}
public void addFilters(DruidDataSource dataSource) {
// 添加统计拦截器
StatFilter statFilter = new StatFilter();
statFilter.setLogSlowSql(true); // 开启慢查询日志记录
statFilter.setMergeSql(true); // 合并多个 SQL 输出成一条
statFilter.setSlowSqlMillis(1000L); // 超过 1 秒视为慢查询
WallFilter wallFilter = new WallFilter(); // 防御 SQL 注入攻击
wallFilter.setDbType("mysql"); // 指定使用的数据库类型
dataSource.getProxyFilters().add(statFilter);
dataSource.getProxyFilters().add(wallFilter);
}
}
```
该部分代码实现了对慢查询的日志记录和防御潜在的 SQL 注入风险的功能[^3]。
---
阅读全文
相关推荐

















