Alibaba Druid简单介绍及使用

概要

Alibaba Druid(以下简称 Druid)是阿里巴巴开源的数据库连接池、SQL 解析、监控和扩展功能的工具集合。它不仅仅是一个数据库连接池,还提供了强大的监控和管理功能,可以帮助开发者更好地管理数据库连接、优化SQL查询以及监控数据库性能。

Druid 的主要特点和功能

  • 数据库连接池: Druid 提供高性能的数据库连接池,可以管理和复用数据库连接,减少连接的创建和销毁开销,提高系统性能。
  • 监控: Druid 内置了监控功能,可以通过内置的监控页面查看数据库连接的使用情况、SQL 执行情况、耗时统计等。这对于实时监控数据库的性能和资源使用非常有帮助。
  • 防御 SQL 注入: Druid 提供了 SQL 解析功能,可以识别并防御常见的 SQL 注入攻击,保障系统的安全性。
  • 性能优化: Druid 可以分析 SQL 查询的性能,帮助开发者找出慢查询、高耗时的 SQL 语句,从而进行性能优化。
  • 扩展性: Druid 支持定制插件,开发者可以根据实际需求自定义插件,添加一些额外的功能。
  • 连接池监控和统计: 可以监控活跃连接数、空闲连接数、创建连接数、销毁连接数等连接池的信息,从而更好地管理连接资源。
  • SQL 性能统计: 可以查看每个 SQL 查询的执行时间、执行次数、返回行数等统计信息,帮助开发者定位性能瓶颈。
  • 数据库访问频率统计: 可以统计不同 SQL 的访问频率,帮助开发者了解哪些 SQL 查询被频繁访问。
  • SQL 执行异常监控: 可以监控 SQL 执行过程中的异常情况,帮助开发者及时发现和解决问题。
  • 动态数据源支持: Druid 支持多数据源的动态切换,可以在运行时切换不同的数据源。

Druid 的使用

在项目中使用 Alibaba Druid 需要进行一系列配置和集成步骤。以下是使用 Alibaba Druid 的一般步骤

一、添加依赖

在项目的 Maven 或 Gradle 配置文件中,添加 Alibaba Druid 的依赖。例如,对于 Maven,可以在 pom.xml 文件中添加如下依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.6</version> <!-- 版本 -->
</dependency>

二、配置数据源:

在项目的配置文件(通常是 application.properties 或 application.yml)中配置数据源相关的属性,例如数据库的 URL、用户名、密码等。这些属性会被自动注入到 Druid 数据源中。以下是一个简单的示例

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: myuser
    password: mypassword
    driver-class-name: com.mysql.cj.jdbc.Driver

三、配置 Druid 监控和过滤器

创建一个 Spring 配置类,用于配置 Druid 的监控页面和过滤器。这个配置类会创建一些 Bean,分别用于设置监控页面访问路径、用户名密码、过滤器规则等

package com.example.config;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
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 {

    // 配置数据源,将数据源配置属性绑定到 DruidDataSource Bean
    @ConfigurationProperties(prefix = "spring.datasource")
    @Bean
    public DruidDataSource druidDataSource() {
        return new DruidDataSource();
    }

    // 配置 Druid 监控的 Servlet
    @Bean
    public ServletRegistrationBean<StatViewServlet> statViewServlet() {
        ServletRegistrationBean<StatViewServlet> servletRegistrationBean =
                new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");

        // 设置监控页面的配置参数
        servletRegistrationBean.addInitParameter("allow", "127.0.0.1"); // 允许访问的 IP
        servletRegistrationBean.addInitParameter("deny", "127.0.0.2"); // 拒绝访问的 IP
        servletRegistrationBean.addInitParameter("loginUsername", "admin"); // 登录用户名
        servletRegistrationBean.addInitParameter("loginPassword", "password"); // 登录密码
        servletRegistrationBean.addInitParameter("resetEnable", "false"); // 是否允许重置数据

        return servletRegistrationBean;
    }

    // 配置 Druid 过滤器
    @Bean
    public FilterRegistrationBean<WebStatFilter> statFilter() {
        FilterRegistrationBean<WebStatFilter> filterRegistrationBean =
                new FilterRegistrationBean<>(new WebStatFilter());

        // 配置过滤规则
        filterRegistrationBean.addUrlPatterns("/*");
        filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");

        return filterRegistrationBean;
    }
}

使用这个配置类,可以将 Alibaba Druid 集成到你的项目中,实现数据库连接池的管理和监控功能。请根据您的项目需要进行适当的修改和配置

四、启动应用程序

当应用程序启动时,Spring Boot 会自动初始化配置的数据源和 Druid 监控功能

五、访问监控页面

打开浏览器,访问配置的 Druid 监控页面路径,例如 http://localhost:8080/druid,端口号根据自己的配置,默认为8080,输入配置的登录用户名和密码即可进入监控页面

druid监控界面

小结

需要注意的是,以上步骤是一个简单的示例。实际使用中,你可能还需要根据项目的需要进行更详细的配置,例如连接池大小、连接池参数、监控页面的安全性配置等。

另外,如果你的项目使用 Spring Boot,那么使用 Alibaba Druid Starter 可以大大简化集成过程,因为 Spring Boot 提供了许多自动配置功能,可以自动根据配置文件中的属性进行初始化。

常见问题请参考 Alibaba Druid 官方文档

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值