找回密码
 立即注册
查看: 410|回复: 0

[其它] Spring Boot整合Druid:轻松实现SQL监控和数据库密码加密

[复制链接]

279

主题

0

回帖

964

积分

超级版主

积分
964
发表于 2024-7-14 12:23:00 | 显示全部楼层 |阅读模式
1. 引言

在现代企业级应用开发中,数据库连接池和SQL监控是非常重要的组成部分。Spring Boot作为一个简化了Spring应用开发的框架,广泛应用于各类项目中。Druid是阿里巴巴开源的数据库连接池,提供了强大的监控和管理功能。本文将详细介绍如何在Spring Boot项目中整合Druid,实现SQL监控和数据库密码加密。

2. 环境准备

在开始之前,确保已安装以下环境和工具:

(1) JDK 8或更高版本
(2) Maven 3.2+或Gradle
(3) 一个Spring Boot项目

3. 添加Druid依赖

首先,需要在项目的`pom.xml`中添加Druid的依赖。


  1. <dependency>
  2.     <groupId>com.alibaba</groupId>
  3.     <artifactId>druid-spring-boot-starter</artifactId>
  4.     <version>1.1.22</version>
  5. </dependency>
复制代码



4. 配置Druid数据源

在`application.yml`或`application.properties`中配置Druid数据源。


  1. application.yml:

  2. spring:
  3.   datasource:
  4.     druid:
  5.       url: jdbc:mysql://localhost:3306/yourdb
  6.       username: yourusername
  7.       password: yourpassword
  8.       driver-class-name: com.mysql.cj.jdbc.Driver
  9.       initial-size: 5
  10.       max-active: 20
  11.       min-idle: 5
  12.       max-wait: 60000
  13.       filters: stat,wall

  14. application.properties:

  15. spring.datasource.druid.url=jdbc:mysql://localhost:3306/yourdb
  16. spring.datasource.druid.username=yourusername
  17. spring.datasource.druid.password=yourpassword
  18. spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver
  19. spring.datasource.druid.initial-size=5
  20. spring.datasource.druid.max-active=20
  21. spring.datasource.druid.min-idle=5
  22. spring.datasource.druid.max-wait=60000
  23. spring.datasource.druid.filters=stat,wall
复制代码



5. 配置Druid监控

Druid提供了一个强大的Web监控界面,可以方便地查看SQL执行情况和数据库连接池状态。需要在Spring Boot项目中配置一个`DruidStatViewServlet`。

在项目的`com.example.config`包中创建一个新的配置类`DruidConfig`:


  1. import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
  2. import com.alibaba.druid.support.http.WebStatFilter;
  3. import com.alibaba.druid.support.http.StatViewServlet;
  4. import org.springframework.boot.context.properties.ConfigurationProperties;
  5. import org.springframework.boot.web.servlet.FilterRegistrationBean;
  6. import org.springframework.boot.web.servlet.ServletRegistrationBean;
  7. import org.springframework.context.annotation.Bean;
  8. import org.springframework.context.annotation.Configuration;
  9. import javax.sql.DataSource;

  10. @Configuration
  11. public class DruidConfig {

  12.     @Bean
  13.     @ConfigurationProperties("spring.datasource.druid")
  14.     public DataSource druidDataSource() {
  15.         return DruidDataSourceBuilder.create().build();
  16.     }

  17.     @Bean
  18.     public ServletRegistrationBean<StatViewServlet> druidStatViewServlet() {
  19.         ServletRegistrationBean<StatViewServlet> servletRegistrationBean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");
  20.         servletRegistrationBean.addInitParameter("loginUsername", "admin");
  21.         servletRegistrationBean.addInitParameter("loginPassword", "admin");
  22.         return servletRegistrationBean;
  23.     }

  24.     @Bean
  25.     public FilterRegistrationBean<WebStatFilter> webStatFilter() {
  26.         FilterRegistrationBean<WebStatFilter> filterRegistrationBean = new FilterRegistrationBean<>(new WebStatFilter());
  27.         filterRegistrationBean.addUrlPatterns("/*");
  28.         filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
  29.         return filterRegistrationBean;
  30.     }
  31. }
复制代码


6. 配置数据库密码加密

为了确保数据库密码的安全性,可以使用Druid的加密功能。首先,生成加密后的密码。在项目根目录下运行以下命令:

  1. java -cp druid-1.1.22.jar com.alibaba.druid.filter.config.ConfigTools yourpassword
复制代码



将生成的加密密码和公钥、私钥保存起来。然后,在`application.yml`或`application.properties`中配置加密后的密码。

  1. application.yml:

  2. spring:
  3.   datasource:
  4.     druid:
  5.       url: jdbc:mysql://localhost:3306/yourdb
  6.       username: yourusername
  7.       password: ENC(yourEncryptedPassword)
  8.       driver-class-name: com.mysql.cj.jdbc.Driver
  9.       initial-size: 5
  10.       max-active: 20
  11.       min-idle: 5
  12.       max-wait: 60000
  13.       filters: stat,wall
  14.       connection-properties: config.decrypt=true;config.decrypt.key=yourPublicKey

  15. application.properties:

  16. spring.datasource.druid.url=jdbc:mysql://localhost:3306/yourdb
  17. spring.datasource.druid.username=yourusername
  18. spring.datasource.druid.password=ENC(yourEncryptedPassword)
  19. spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver
  20. spring.datasource.druid.initial-size=5
  21. spring.datasource.druid.max-active=20
  22. spring.datasource.druid.min-idle=5
  23. spring.datasource.druid.max-wait=60000
  24. spring.datasource.druid.filters=stat,wall
  25. spring.datasource.druid.connection-properties=config.decrypt=true;config.decrypt.key=yourPublicKey
复制代码



7. 结论

通过本文的介绍,我们了解了如何在Spring Boot项目中整合Druid,实现SQL监控和数据库密码加密。Druid的强大功能不仅提升了数据库连接池的性能,还提供了便捷的监控和管理工具。希望本文能够为您的项目提供有价值的参考。
荔枝学姐爱吃荔枝!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系站长|Archiver|手机版|小黑屋|主机论坛

GMT+8, 2025-4-3 16:56 , Processed in 0.062888 second(s), 23 queries .

Powered by 主机论坛 HostSsss.Com

HostSsss.Com

快速回复 返回顶部 返回列表