前言
SpringBoot 整合 Druid
实现。
实现
理论
Druid
是一个高性能的开源数据库连接池,它提供了连接池管理、SQL 监控、性能调优等功能。它是由阿里巴巴开源的,旨在提供高效可靠的数据库连接管理解决方案。
Druid
连接池具有以下特点和功能:
-
高性能:Druid 使用高效的连接池算法和连接复用机制,可以有效地管理和复用数据库连接,提供高性能的数据库访问能力。
-
连接池管理:Druid 连接池可以自动管理数据库连接的创建、销毁和复用,通过配置可以灵活控制连接池的大小、连接超时等参数,以满足不同应用的需求。
-
SQL 监控:Druid 可以监控和统计应用程序执行的 SQL 语句,包括 SQL 执行次数、执行时间、执行错误等信息,可以帮助开发人员分析和优化 SQL 语句的性能。
-
连接池扩展:Druid 提供了一些连接池扩展功能,如定制连接验证、定制过滤器等,可以根据业务需求进行自定义扩展。
-
性能调优:Druid 连接池内置了一些性能调优的功能,包括连接预热、慢 SQL 日志、缓存预热等,可以帮助优化数据库访问性能。
-
可视化监控:Druid 提供了可视化的监控界面,可以实时查看连接池的状态、SQL 执行情况、连接活跃度等信息,方便开发人员进行监控和调优。
Druid 连接池在许多 Java 应用程序中广泛使用,特别是在使用 Spring Boot 和 Spring 框架的项目中。它可以有效地管理数据库连接,提供高性能的数据库访问能力,并通过 SQL 监控和性能调优功能帮助开发人员优化应用程序的数据库操作。
SpringBoot
新建一个 SpringBoot 项目。
pom.xml
在 pom.xml
文件中添加如下依赖:
- <!-- Spring Boot Starter -->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
- <!-- Druid Starter -->
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>druid-spring-boot-starter</artifactId>
- <version>1.2.6</version>
- </dependency>
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>8.0.11</version>
- </dependency>
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-jdbc</artifactId>
- <version>RELEASE</version>
- <scope>compile</scope>
- </dependency>
application.properties
在 application.properties
中添加如下配置:
- # 数据库连接配置
- spring.datasource.url=jdbc:mysql://localhost:3306/db_name?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
- spring.datasource.username=db_username
- spring.datasource.password=db_password
- # Druid配置
- spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
- spring.datasource.driver-class-name=com.mysql.jdbc.Driver
- spring.datasource.filters=stat,wall
- spring.datasource.maxActive=20
- spring.datasource.initialSize=1
- spring.datasource.maxWait=60000
- spring.datasource.minIdle=1
- spring.datasource.timeBetweenEvictionRunsMillis=60000
- spring.datasource.minEvictableIdleTimeMillis=300000
- spring.datasource.validationQuery=SELECT 1
- spring.datasource.testWhileIdle=true
- spring.datasource.testOnBorrow=false
- spring.datasource.testOnReturn=false
- spring.datasource.poolPreparedStatements=true
- spring.datasource.maxOpenPreparedStatements=20
- # Druid监控配置
- spring.datasource.druid.stat-view-servlet.enabled=true
- spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
- spring.datasource.druid.web-stat-filter.enabled=true
- spring.datasource.druid.web-stat-filter.url-pattern=/*
测试controller
我们使用一个 controller 来进行测试:
- package com.langjialing.druiddemo.controller;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.jdbc.core.JdbcTemplate;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.bind.annotation.RestController;
- /**
- * @author 郎家岭伯爵
- * @time 2023/7/11 15:13
- */
- @RestController
- public class TestController {
- @Autowired
- private JdbcTemplate jdbcTemplate;
- @GetMapping("/test")
- public String test(@RequestParam Integer id){
- String sql = "select user_name from user where user_id = " + id;
- String result = jdbcTemplate.queryForObject(sql, String.class);
- return result;
- }
- }
Druid 监控页面(访问地址 http://localhost:8080/druid
):
总结
SpringBoot 整合 Druid
实现。