Druid 是一个高性能的、支持监控的、可扩展的数据库连接池。Druid 数据源是针对数据库连接池的一种实现,它可以管理连接、提供连接池的连接访问接口以及连接池的相关配置。相比于其他连接池,Druid 数据源具有以下优点:
性能优异:Druid 数据源采用了“空闲检测”、“预编译语句池”、“多路复用”等技术,可以有效减少连接的创建和销毁,提高连接的利用率,从而提升应用的性能表现。
功能丰富:Druid 数据源支持各种连接池的特性,例如:事务、连接池缓存、性能统计、SQL 监控、SQL 防火墙、日志输出等。
易于管理:Druid 数据源提供了丰富的监控指标,可以方便地监控连接池的运行状况,及时发现问题并进行优化。
在使用 Spring Boot 框架时,我们可以通过添加 druid-spring-boot-starter 依赖来使用 Druid 数据源,并通过配置一些参数来优化连接池的性能和行为,例如:连接池大小、空闲连接检测时间、预编译语句池大小等。配置 Druid 数据源可以让我们更加灵活地管理数据库连接,提高应用的性能和稳定性。
在 Spring Boot 中使用的 Druid 是一个开源的数据库连接池框架,它可以帮助应用程序管理数据库连接,提高数据库连接的可用性和性能。
Druid 的主要作用包括:
数据库连接池管理:Druid 提供了数据库连接池管理的功能,能够动态地管理数据库连接池的大小、连接的最大活动数、最大等待时间等参数,从而使应用程序能够更加高效地使用数据库连接。
数据库监控:Druid 提供了丰富的数据库监控功能,可以监控应用程序中的 SQL 语句执行情况、连接池状态、缓存命中率等数据,帮助开发人员了解数据库的使用情况,优化应用程序的性能。
SQL 防注入:Druid 内置了 SQL 防注入功能,可以有效地防止应用程序受到 SQL 注入攻击。
统计监控:Druid 提供了统计监控功能,可以统计应用程序中的 SQL 语句执行次数、连接次数、连接池使用情况等数据,帮助开发人员优化应用程序的性能和稳定性。
Druid 是一个非常强大的数据库连接池框架,可以帮助开发人员更加高效地管理和使用数据库连接,并提高应用程序的性能和稳定性。
当使用 Spring Boot 时,可以通过添加 spring-boot-starter-jdbc 和 druid-spring-boot-starter 依赖来使用 Druid 数据库连接池。以下是一些使用 Druid 数据库连接池的 Spring Boot 示例:
在 application.properties 文件中配置 Druid 数据源:
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
# 使用 Druid 数据源
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
# Druid 数据源配置
spring.datasource.druid.initial-size=1
spring.datasource.druid.max-active=20
spring.datasource.druid.min-idle=1
spring.datasource.druid.max-wait=60000
spring.datasource.druid.pool-prepared-statements=true
spring.datasource.druid.max-pool-prepared-statement-per-connection-size=20
spring.datasource.druid.validation-query=SELECT 1 FROM DUAL
spring.datasource.druid.validation-query-timeout=5
spring.datasource.druid.test-on-borrow=true
spring.datasource.druid.test-on-return=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
spring.datasource.druid.keep-alive=true
spring.datasource.druid.keep-alive-timeout=300000
spring.datasource.druid.filters=wall,stat,log4j
spring.datasource.druid.use-global-data-source-stat=true
spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
在 application.yml 文件中配置 Druid 数据源:
spring:
datasource:
url: jdbc:mysql://localhost:3306/test
username: root
password: root
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
# Druid 数据源配置
druid:
initial-size: 1
max-active: 20
min-idle: 1
max-wait: 60000
pool-prepared-statements: true
max-pool-prepared-statement-per-connection-size: 20
validation-query: SELECT 1 FROM DUAL
validation-query-timeout: 5
test-on-borrow: true
test-on-return: false
test-while-idle: true
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
keep-alive: true
keep-alive-timeout: 300000
filters: wall,stat,log4j
use-global-data-source-stat: true
connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
在 Java 代码中使用 Druid 数据源:
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ExampleController {
@Autowired
private JdbcTemplate jdbcTemplate;
@GetMapping("/example")
public String example() {
int count = jdbcTemplate.queryForObject("SELECT COUNT(*) FROM table", Integer.class);
return "Table has " + count + " rows.";
}
}
版权声明:除特殊说明,文章均为博主 去吐槽 原创文章,转载请注明原文出处。