Spring Boot 整合 Druid 并开启监控

文章目录

Druid 是一个由阿里巴巴开源的高性能数据库连接池,它不仅提供了高效的连接管理功能,还自带了强大的监控和统计特性。将 Druid 与 Spring Boot 结合使用,可以显著提高应用程序的数据访问性能,并且通过内置的监控页面,开发者能够实时监控数据库连接的状态、SQL 执行情况等重要信息。

1. 引言

随着互联网应用的快速发展,对数据库连接池的要求也越来越高。传统的连接池可能无法满足现代应用对于高性能和高可用性的需求。而 Druid 凭借其优秀的性能优化、详细的监控数据以及灵活的配置选项,成为了许多开发者的首选。接下来,我们将一步步展示如何在 Spring Boot 中引入 Druid,并启用它的监控功能。

2. 添加依赖

首先,在你的 pom.xml 文件中添加 Druid 的 Maven 依赖:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-3-starter</artifactId>
    <version>1.2.24</version>
</dependency>

如果你使用的是 Gradle 构建工具,则可以在 build.gradle 文件中添加如下内容:

implementation 'com.alibaba:druid-spring-boot-3-starter:1.2.24'

3. 配置数据源

接下来,在 application.properties 或 application.yml 文件中配置 Druid 数据源的相关参数。这里以 .properties 文件为例:

# Druid 数据源配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.druid.initial-size=5
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-active=20
spring.datasource.druid.test-on-borrow=true
spring.datasource.druid.validation-query=SELECT 1 FROM DUAL

# 监控页面设置
spring.datasource.druid.web-stat-filter.enabled=true
spring.datasource.druid.stat-view-servlet.enabled=true
spring.datasource.druid.stat-view-servlet.login-username=druid
spring.datasource.druid.stat-view-servlet.login-password=d1234

yaml示例:

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false
    username: root
    password: 1234
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      test-on-borrow: true
      validation-query: SELECT 1 FROM DUAL
      web-stat-filter:
        enabled: true
      stat-view-servlet:
        enabled: true
        login-username: druid
        login-password: d1234

上述配置项包括了连接池的基本参数(如初始大小、最小空闲连接数、最大活动连接数等),同时也启用了 Druid 的 Web 统计过滤器和统计视图 Servlet,并设置了登录用户名和密码用于访问监控页面。

4. 开启监控功能

为了更好地管理和监控 Druid 连接池的工作状态,我们需要开启 Druid 提供的监控功能。这可以通过配置文件中的几个关键属性来实现:

  • WebStatFilter:用于收集 Web 应用程序的 SQL 慢查询日志。
  • StatViewServlet:提供了一个可视化的监控页面,可以查看连接池的各项指标。

确保在 application.properties 或 application.yml 中启用了这两个组件:

# 启用 WebStatFilter 和 StatViewServlet
spring.datasource.druid.web-stat-filter.enabled=true
spring.datasource.druid.stat-view-servlet.enabled=true

此外,还可以进一步自定义监控页面的安全策略,比如允许或限制特定 IP 地址访问、设置更多的登录凭证等。

5. 自定义 Druid 配置(可选)

如果默认配置不能满足你的需求,你可以创建一个自定义的 Druid 配置类来覆盖默认设置。例如:

@Configuration
public class DruidConfig {

    @ConfigurationProperties(prefix = "spring.datasource.druid")
    @Bean
    public DruidDataSource druidDataSource() {
        return new DruidDataSource();
    }

    // 如果需要,可以在这里添加更多配置,如过滤器、拦截器等
    @Bean
    public ServletRegistrationBean<StatViewServlet> statViewServlet() {
        ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");
        Map<String, String> params = new HashMap<>();
        params.put("loginUsername", username);
        params.put("loginPassword", password);
        params.put("allow", "localhost");
        params.put("deny", "");
        bean.setInitParameters(params);
        return bean;
    }

    @Bean
    public FilterRegistrationBean<Filter> webStatFilter() {
        FilterRegistrationBean<Filter> bean = new FilterRegistrationBean<Filter>();
        bean.setFilter(new WebStatFilter());
        Map<String, String> params = new HashMap<>();
        params.put("exclusions", "*.js,*.css,/druid/*");
        bean.setUrlPatterns(Arrays.asList("/*"));
        bean.setInitParameters(params);
        return bean;
    }
}

6. 访问监控页面

完成上述配置后,启动 Spring Boot 应用程序,然后打开浏览器并访问以下 URL 来查看 Druid 的监控页面:

http://localhost:8080/druid/

使用之前设置的用户名和密码登录后,你将看到一个包含详细连接池信息和 SQL 查询统计的界面。通过这个页面,你可以轻松地监控数据库连接的状态、分析 SQL 性能瓶颈等问题。
在这里插入图片描述

7. 注意事项

  • 生产环境安全:在生产环境中部署时,请务必加强对监控页面的访问控制,避免敏感信息泄露。
  • 性能影响:虽然 Druid 的监控功能非常有用,但在高并发场景下可能会对系统性能产生一定影响。因此,在实际应用中应权衡利弊,合理配置监控级别。
  • 更新维护:定期检查 Druid 版本更新,及时修复已知漏洞和问题,保持系统的稳定性和安全性。

8. 总结

通过以上步骤,我们成功地在 Spring Boot 应用中集成了 Druid 数据库连接池,并开启了其监控功能。这不仅提高了数据库访问的效率,还为开发者提供了宝贵的调试和优化工具。希望这篇文章能够帮助你。

更多配置或使用请参考官方文档:https://github.com/alibaba/druid

Spring Boot 项目中整合 **Druid** 数据库连接池,可以带来强大的监控SQL 分析、性能调优和防御 SQL 注入等能力。Druid 是阿里巴巴开源的高性能数据库连接池组件,兼容 JDBC 和数据库连接池规范,提供丰富的监控功能。 下面详细说明如何在 Spring Boot 项目中整合 Druid启用其监控页面。 --- ### ✅ 步骤一:添加 Maven 依赖 在 `pom.xml` 中引入 `druid-spring-boot-starter`(推荐方式)或手动引入 Druid 核心包: ```xml <dependencies> <!-- Spring Boot Starter Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- MySQL Driver --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <!-- Druid Spring Boot Starter --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.2.20</version> <!-- 推荐使用最新稳定版本 --> </dependency> <!-- MyBatis Starter (可选,用于演示) --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>3.0.3</version> </dependency> </dependencies> ``` --- ### ✅ 步骤二:配置 `application.yml` ```yaml server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC username: root password: yourpassword driver-class-name: com.mysql.cj.jdbc.Driver # 使用 Druid 数据源 type: com.alibaba.druid.pool.DruidDataSource # Druid 特有配置 druid: # 连接池配置 initial-size: 5 min-idle: 5 max-active: 20 max-wait: 60000 time-between-eviction-runs-millis: 60000 min-evictable-idle-time-millis: 300000 validation-query: SELECT 1 test-while-idle: true test-on-borrow: false test-on-return: false pool-prepared-statements: true max-pool-prepared-statement-per-connection-size: 20 # 配置监控统计拦截的 filters,去掉后监控界面 sql 无法统计,'wall' 用于防火墙 filters: stat,wall,log4j # 允许清空连接池(用于重置监控) clear-filters-enable: true connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 # 配置 Druid 监控页面 web-stat-filter: enabled: true url-pattern: /* exclusions: "/druid/*,*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico" stat-view-servlet: enabled: true url-pattern: /druid/* reset-enable: false login-username: admin login-password: admin123 allow: 127.0.0.1 deny: ``` --- ### ✅ 步骤三:创建 Druid 配置类(可选) 虽然 `druid-spring-boot-starter` 自动配置了大部分内容,但如果你想自定义一些 Bean 或扩展功能,可以创建配置类: ```java import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder; import com.alibaba.druid.pool.DruidDataSource; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.sql.DataSource; @Configuration public class DruidConfig { @Bean @ConfigurationProperties("spring.datasource.druid") public DataSource dataSource() { return DruidDataSourceBuilder.create().build(); } } ``` > ⚠️ 注意:如果你已经使用 `druid-spring-boot-starter`,这一步通常是可选的,因为自动配置已经帮你完成了数据源创建。 --- ### ✅ 步骤四:启动项目访问监控页面 启动 Spring Boot 应用后,访问 Druid 提供的监控页面: 👉 浏览器打开:[http://localhost:8080/druid](http://localhost:8080/druid) 输入你在 `application.yml` 中配置的用户名和密码(如 `admin/admin123`),即可进入 Druid 控制台,查看: - 数据源状态 - SQL 监控(执行次数、耗时、慢查询) - Web URI 访问统计 - Spring 方法监控(需开启) - Session 监控(如果集成 Web) --- ### ✅ 可选:开启SQL 日志记录 在 `filters` 中加入 `stat` 设置 `druid.stat.slowSqlMillis`,例如上面配置了 5 秒为慢 SQL 阈值。 你还可以通过代码监听慢 SQL: ```java import com.alibaba.druid.proxy.jdbc.StatementProxy; import com.alibaba.druid.sql.SQLUtils; import com.alibaba.druid.sql.ast.SQLStatement; import com.alibaba.druid.sql.parser.SQLParserUtils; import com.alibaba.druid.sql.parser.SQLStatementParser; import com.alibaba.druid.wall.spi.WallVisitorUtils; // 在 StatFilter 中可扩展处理慢 SQL ``` 或者使用 AOP + Druid 的 `StatViewServlet` 实现告警。 --- ### ✅ 安全提示 生产环境中建议: - 设置 `allow` 白名单 IP - 开启登录认证(已配置) - 禁用 `reset-enable: false` - 不暴露 `/druid` 路径给公网 --- ### 总结 上述步骤完整实现了 Spring Boot 整合 Druid 的全过程: - 引入依赖 - 配置 `application.yml` - 启用监控页面 - 可视化查看数据库连接与 SQL 执行情况 Druid 提升了系统对数据库资源的掌控力,尤其适合需要性能监控和调优的项目。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值