java druid 配置详解

2025-04-13 10

Image

Java Druid 配置详解

在Java开发中,数据库连接池是提高数据库操作性能的关键组件之一。Druid作为阿里巴巴开源的数据库连接池,在性能、监控和扩展性方面表现优异。如何配置Druid连接池,并提供多种解决方案以满足不同的需求。


开头:解决方案

Druid连接池的配置主要包括以下几个步骤:
1. 引入Maven依赖。
2. 配置数据源参数(如URL、用户名、密码等)。
3. 根据需求设置连接池属性(如连接数、最小空闲连接数等)。
4. 配合Spring框架或其他容器进行整合。
5. 使用Druid提供的监控功能来优化数据库性能。

以下将详细讲解每一步的具体实现方法。


1. 引入Druid依赖

pom.xml文件中引入Druid的Maven依赖:

xml
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.8</version> <!-- 请根据需要选择版本 -->
</dependency>

如果项目使用的是Spring Boot,则可以引入Spring Boot Starter版本:

xml
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.8</version>
</dependency>


2. 基础配置

以下是Druid数据源的基本配置示例代码:

java
import com.alibaba.druid.pool.DruidDataSource;</p>

<p>import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;</p>

<p>public class DruidConfig {</p>

<pre><code>public static DataSource createDataSource() {
    DruidDataSource dataSource = new DruidDataSource();
    // 数据库连接信息
    dataSource.setUrl("jdbc:mysql://localhost:3306/test_db?useUnicode=true&characterEncoding=utf8");
    dataSource.setUsername("root");
    dataSource.setPassword("password");

    // 连接池配置
    dataSource.setInitialSize(5); // 初始化时建立的连接数
    dataSource.setMinIdle(5); // 最小空闲连接数
    dataSource.setMaxActive(20); // 连接数
    dataSource.setMaxWait(60000); // 获取连接的等待时间(毫秒)

    // 配置检测语句
    dataSource.setValidationQuery("SELECT 1");
    dataSource.setTestOnBorrow(false); // 借用连接时是否验证
    dataSource.setTestWhileIdle(true); // 空闲时是否验证
    dataSource.setTimeBetweenEvictionRunsMillis(60000); // 检测线程运行间隔时间(毫秒)
    dataSource.setMinEvictableIdleTimeMillis(300000); // 连接保持空闲而不被清除的最长时间(毫秒)

    return dataSource;
}

public static void main(String[] args) throws SQLException {
    DataSource dataSource = createDataSource();
    Connection connection = dataSource.getConnection();
    System.out.println("Connection established: " + connection);
    connection.close();
}

}


3. Spring Boot 集成

在Spring Boot项目中,可以通过application.propertiesapplication.yml文件进行配置,简化Druid的使用。

3.1 使用application.properties配置

properties
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://localhost:3306/test_db?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=password</p>

<h1>连接池配置</h1>

<p>spring.datasource.druid.initial-size=5
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-active=20
spring.datasource.druid.max-wait=60000</p>

<h1>检测配置</h1>

<p>spring.datasource.druid.validation-query=SELECT 1
spring.datasource.druid.test-on-borrow=false
spring.datasource.druid.test-while-idle=true
spring.datasource.druid.time-between-eviction-runs-millis=60000
spring.datasource.druid.min-evictable-idle-time-millis=300000

3.2 使用application.yml配置

yaml
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
url: jdbc:mysql://localhost:3306/test_db?useUnicode=true&characterEncoding=utf8
username: root
password: password
druid:
initial-size: 5
min-idle: 5
max-active: 20
max-wait: 60000
validation-query: SELECT 1
test-on-borrow: false
test-while-idle: true
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000


4. Druid 监控配置

Druid提供了强大的监控功能,可以通过Web界面实时查看连接池的状态。

4.1 引入依赖

确保pom.xml中包含以下依赖:

xml
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.8</version>
</dependency>

4.2 配置监控

application.properties中添加以下配置:

properties</p>

<h1>开启Druid监控</h1>

<p>spring.datasource.druid.stat-view-servlet.enabled=true
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.login-password=123456

访问http://localhost:8080/druid/即可进入Druid监控页面。


5. 多种思路与扩展

5.1 动态数据源切换

在多数据源场景下,可以结合Spring AOP实现动态数据源切换。以下是一个简单的动态数据源配置示例:

java
import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;</p>

<p>public class DynamicDataSource extends AbstractRoutingDataSource {</p>

<pre><code>@Override
protected Object determineCurrentLookupKey() {
    return DataSourceContextHolder.getDataSourceType();
}

}

// 数据源上下文工具类
public class DataSourceContextHolder {
private static final ThreadLocal contextHolder = new ThreadLocal<>();

public static void setDataSourceType(String dsType) {
    contextHolder.set(dsType);
}

public static String getDataSourceType() {
    return contextHolder.get();
}

public static void clearDataSourceType() {
    contextHolder.remove();
}

}

通过上述代码,可以在运行时动态切换数据源。

5.2 SQL防火墙

Druid内置了SQL防火墙功能,可以防止SQL注入攻击。启用SQL防火墙的方式如下:

java
dataSource.setFilters("stat,wall");


详细Druid连接池的配置方法,包括基础配置、Spring Boot集成、监控配置以及动态数据源切换等高级功能。开发者可以根据实际需求选择合适的配置方案,充分利用Druid的强大功能提升系统性能和安全性。

1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!cheeksyu@vip.qq.com
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有积分奖励和额外收入!
5.严禁将资源用于任何违法犯罪行为,不得违反国家法律,否则责任自负,一切法律责任与本站无关

源码下载