您的位置:

Spring Druid数据源的配置步骤及注意事项

一、为什么使用Druid?

Druid 是由阿里巴巴开发的数据库连接池组件,Druid 在监控、可扩展性、稳定性方面具有非常大的优势。同时,Druid 提供了一个界面,可以实时监控连接池和 SQL 执行情况,方便开发人员进行分析和优化。

在 Spring 项目中,使用 Druid 可以提高数据库的连接效率和可靠性,具有非常大的意义。

二、使用Druid的配置步骤

1. 添加Druid和MySQL依赖库

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.21</version>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.22</version>
</dependency>

2. 配置Druid连接池参数

spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&useSSL=false
spring.datasource.username=root
spring.datasource.password=root

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# 配置Druid连接池
spring.datasource.initial-size=5
spring.datasource.min-idle=5
spring.datasource.max-active=20
spring.datasource.max-wait=60000
spring.datasource.time-between-eviction-runs-millis=60000
spring.datasource.min-evictable-idle-time-millis=300000
spring.datasource.validation-query=select 1 from dual
spring.datasource.test-while-idle=true
spring.datasource.test-on-borrow=false
spring.datasource.test-on-return=false

# 配置Druid监控统计
spring.datasource.filters=stat
spring.datasource.web-stat-filter.url-pattern=/*

# 配置Druid登录界面
spring.datasource.druid.login-username=admin
spring.datasource.druid.login-password=admin
spring.datasource.druid.reset-enable=false

3. 注册Druid的Servlet和Filter

在 Spring Boot 中,可以在 Application 中通过注解 @ServletComponentScan 扫描 Servlet 和 Filter。

@ServletComponentScan
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

4. 配置Druid的监控页面

在 Spring Boot 中,可以通过配置 Druid 的 Servlet 和 Filter 实现 Druid 监控页面的访问,在配置文件中添加以下配置信息。

spring.datasource.druid.stat-view-servlet.enabled=true
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
spring.datasource.druid.stat-view-servlet.reset-enable=true
spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.login-password=admin

spring.datasource.druid.stat-view-filter.enabled=true
spring.datasource.druid.stat-view-filter.url-pattern=/*
spring.datasource.druid.stat-view-filter.exclusions=*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*
spring.datasource.druid.stat-view-filter.reset-enable=true
spring.datasource.druid.stat-view-filter.login-username=admin
spring.datasource.druid.stat-view-filter.login-password=admin

三、注意事项

1. 配置连接池时需要对参数进行合理调整

在实际使用中,需要根据实际情况调整配置参数,保证连接池的最佳性能。

initialSize:初始化连接数;

minIdle:最小空闲连接数;

maxActive:最大活跃连接数;

maxWait:获取连接的最大等待时间;

timeBetweenEvictionRunsMillis:间隔多久进行一次检测,检测需要关闭的空闲连接,单位是毫秒;

minEvictableIdleTimeMillis:一个连接在池中最小空闲时间,单位是毫秒;

validationQuery:用来检测连接是否有效的 SQL 语句;

testWhileIdle:是否开启检测连接是否有效;

testOnBorrow:在获取连接的时候是否检测连接是否有效;

testOnReturn:在归还连接的时候是否检测连接是否有效;

2. 注意Druid监控的安全问题

Druid 的监控功能提供了实时监控连接和 SQL 执行情况的界面,方便开发人员进行分析和优化。但是,由于监控界面并没有进行身份验证,因此可能会导致安全问题。

为了保证监控功能的安全性,需要在生产环境中禁用监控功能,并添加身份验证功能。

3. 需要在代码中进行实体类的注入

在使用 Spring Boot 和 Druid 时,需要在代码中注入 DataSource,具体实现方式可以参考以下代码:

@Autowired
private DataSource dataSource;

4. 配置Druid连接池时可能会遇到一些问题

在配置 Druid 连接池时,可能会出现一些问题,如运行时报错、连接池无法初始化等问题。如果遇到问题,可以查看控制台的日志信息,排查错误原因。

总结

本文介绍了使用 Druid 连接池的注意事项和配置步骤。在使用 Druid 时,需要合理调整连接池参数,注意监控安全问题,并进行实体类的注入。如果遇到连接池配置问题,可以查看控制台的日志信息,排查问题所在。