• SpringBoot 如何使用 Druid 进行数据库连接池管理


    使用 Druid 进行数据库连接池管理的 Spring Boot 应用

    数据库连接池是任何Web应用程序的重要组成部分,它们有助于管理数据库连接的复用,提高性能和资源利用率。Druid是一个强大的数据库连接池,它具有监控、防SQL注入、快速、可扩展等特点。在本文中,我们将详细介绍如何在Spring Boot应用中使用Druid进行数据库连接池管理,并提供示例代码。

    在这里插入图片描述

    什么是 Druid?

    Druid是阿里巴巴开源的数据库连接池实现,它提供了高性能、强壮、可扩展、可监控的数据库连接池。Druid不仅仅是一个连接池,它还提供了许多数据库监控和管理的功能,如实时监控、SQL防火墙、慢查询日志等。

    Druid的一些主要特点包括:

    • 高性能:Druid在连接池和监控方面做了大量优化,以确保最佳的性能。

    • 安全性:Druid提供了SQL防火墙,可以检测和阻止恶意SQL注入攻击。

    • 可扩展性:Druid允许您自定义扩展,以满足特定需求。

    • 监控:Druid提供了丰富的监控数据,可以方便地集成到监控系统中。

    创建 Spring Boot 项目

    首先,确保您已经安装了Java开发环境和Maven。接下来,您可以使用Spring Initializer创建一个新的Spring Boot项目。在https://start.spring.io/上选择您的项目配置,然后生成项目并下载。

    添加 Druid 依赖

    在生成的项目中,您需要添加Druid的依赖。在pom.xml文件中,确保以下依赖项已经添加:

    <dependency>
        <groupId>com.alibabagroupId>
        <artifactId>druidartifactId>
        <version>1.2.6version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    这将包括Druid所需的所有依赖。

    配置 Druid 数据源

    接下来,您需要配置Druid数据源。在src/main/resources/application.properties文件中,添加以下配置:

    spring.datasource.url=jdbc:mysql://localhost:3306/mydb
    spring.datasource.username=root
    spring.datasource.password=your_password
    spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
    
    # 配置 Druid 数据源
    spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
    spring.datasource.initialSize=5
    spring.datasource.minIdle=5
    spring.datasource.maxActive=20
    spring.datasource.maxWait=60000
    spring.datasource.timeBetweenEvictionRunsMillis=60000
    spring.datasource.minEvictableIdleTimeMillis=300000
    spring.datasource.validationQuery=SELECT 1 FROM DUAL
    spring.datasource.testWhileIdle=true
    spring.datasource.testOnBorrow=false
    spring.datasource.testOnReturn=false
    spring.datasource.poolPreparedStatements=true
    spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
    spring.datasource.filters=stat,wall,log4j2
    spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    在上述配置中,您需要根据实际情况修改spring.datasource.urlspring.datasource.usernamespring.datasource.password等属性,以便连接到您的数据库。此外,您可以根据需求调整连接池的配置参数。

    配置 Druid 监控

    Druid提供了内置的监控功能,您可以使用它来监控数据库连接池的使用情况。要启用Druid监控,您需要添加一个Servlet和一个Filter。在src/main/java/com/example/demo包中创建一个名为DruidConfig的配置类:

    import com.alibaba.druid.support.http.StatViewServlet;
    import com.alibaba.druid.support.http.WebStatFilter;
    import org.springframework.boot.web.servlet.FilterRegistrationBean;
    import org.springframework.boot.web.servlet.ServletRegistrationBean;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class DruidConfig {
    
        @Bean
        public ServletRegistrationBean<StatViewServlet> druidServlet() {
            ServletRegistrationBean<StatViewServlet> registrationBean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");
            // 设置登录用户名和密码
            registrationBean.addInitParameter("loginUsername", "admin");
            registrationBean.addInitParameter("loginPassword", "admin");
            return registrationBean;
        }
    
        @Bean
        public FilterRegistrationBean<WebStatFilter> filter() {
            FilterRegistrationBean<WebStatFilter> registrationBean = new FilterRegistrationBean<>(new WebStatFilter());
            // 设置过滤路径
            registrationBean.addUrlPatterns("/*");
            // 忽略的资源类型
            registrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
            return registrationBean;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    在上述代码中,我们创建了一个DruidConfig配置类,使用ServletRegistrationBean注册了Druid的监控Servlet,以及使用FilterRegistrationBean注册了Druid的监控Filter。您可以根据需要调整登录用户名和密码,以及过滤路径和忽略的资源类型。

    创建数据访问类

    现在,您可以创建一个数据访问类来测试Druid数据源。在src/main/java/com/example/demo包中创建一个名为DemoDao的类:

    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.stereotype.Repository;
    
    import java.util.List;
    import java.util.Map;
    
    @Repository
    public class DemoDao {
    
        private final JdbcTemplate jdbcTemplate;
    
        public DemoDao(JdbcTemplate jdbcTemplate) {
            this.jdbcTemplate = jdbcTemplate;
        }
    
        public List<Map<String, Object>> queryData() {
            return jdbcTemplate.queryForList("SELECT * FROM my_table");
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    在上述代码中,我们使用JdbcTemplate来执行SQL查询。

    创建测试控制器

    接下来,创建一个测试控制器来测试Druid数据源。在src/main/java/com/example/demo包中创建一个名为DemoController的类:

    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.util
    
    .List;
    import java.util.Map;
    
    @RestController
    public class DemoController {
    
        private final DemoDao demoDao;
    
        public DemoController(DemoDao demoDao) {
            this.demoDao = demoDao;
        }
    
        @GetMapping("/data")
        public List<Map<String, Object>> getData() {
            return demoDao.queryData();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    在上述代码中,我们创建了一个DemoController,其中有一个端点/data,该端点通过调用DemoDao来查询数据库中的数据。

    运行应用程序

    现在,您可以运行应用程序了。使用Maven命令:

    mvn spring-boot:run
    
    • 1

    您的Spring Boot应用程序将启动并运行在默认端口(通常是8080)上。

    访问 Druid 监控

    您可以通过访问http://localhost:8080/druid来访问Druid的监控界面。您可以使用之前在DruidConfig配置类中设置的用户名和密码进行登录。在监控界面上,您可以查看连接池的状态、SQL统计、慢查询日志等信息,以便更好地监控和管理数据库连接池。

    测试应用程序

    使用浏览器或工具如Postman来测试应用程序。以下是一些示例请求:

    • 获取数据库中的数据:

      • URL: GET http://localhost:8080/data

    总结

    本文详细介绍了如何在Spring Boot应用程序中使用Druid进行数据库连接池管理。Druid是一个功能强大且高性能的数据库连接池,它提供了丰富的监控和管理功能,有助于提高应用程序的性能和安全性。

    以上是使用Druid进行数据库连接池管理的示例。希望这篇文章对您有所帮助,让您更好地了解如何在Spring Boot应用程序中集成和配置Druid数据库连接池。 Happy coding!

  • 相关阅读:
    【QT】ROS2 Humble联合使用QT教程
    查看docker中的mysql版本,查看docker中容器,查看mysql版本
    python基本语法
    2-3查找树
    uniapp中input的disabled属性
    Python 数独求解器
    用友vs金蝶产品分析(云星空与YonSuite)
    leetcode - 1647. Minimum Deletions to Make Character Frequencies Unique
    开源数据中台目录汇总
    14.Java RMI学习以及制作远程服务
  • 原文地址:https://blog.csdn.net/stormjun/article/details/133342338