一、为什么使用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 时,需要合理调整连接池参数,注意监控安全问题,并进行实体类的注入。如果遇到连接池配置问题,可以查看控制台的日志信息,排查问题所在。