springboot使用druid详解

以下是“Spring Boot使用Druid详解”的完整攻略:

1. Druid概述

Druid是阿里巴巴开源的一个数据库连接池和监控平台。它提供了比传统的连接池更强的功能,如监控、防御SQL注入攻击、持多种数据源等。

2. Spring Boot集成Druid

Spring Boot集成Druid非常简单,只需要在pom.xml文件中Druid的依赖,然后在application.properties文件中配置数据源即可。以下是一些常用的配置项:

# 数据源配置
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

# 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.test-while-idle=true
spring.datasource.druid.time-between-eviction-runs-millis=60000
spring.datasource.druid.min-evictable-idle-time-millis=300000
spring.datasource.druid.validation-query=SELECT 1 FROM DUAL
spring.datasource.druid.filters=stat,wall,log4j
spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

在上面的配置中,我们配置了一个MySQL数据源,并使用Druid作为连接池。我们设置了连接池的一些参数,如初始连接数、最小空闲连接数、最大活动连接数等。我们还设置了Druid的一些监控和防御SQL注入攻击的参数。

2.1 配置Druid监控

Druid提供了一个监控平台,可以查看连接池的状态、SQL执行情况等。要启用Druid监控,我们需要添加以下依赖:

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

然后在application.properties文件中添加以下配置:

# Druid监控配置
spring.datasource.druid.stat-view-servlet.enabled=true
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.login-password=admin

在上面的配置中,我们启用了Druid监控,并设置了监控页面的访问路径和登录用户名、密码。

2.2 使用Druid的过滤器

Druid提供了一些过滤器,可以对SQL进行监控、防御SQL注入攻击等。以下是一些常用的过滤器:

  • stat:统计SQL执行情况。
  • wall:防御SQL注入攻击。
  • log4j:将SQL执行情况输出到log4j日志中以下是一个示例,演示如何使用Druid的过滤器:
# Druid过滤器配置
spring.datasource.druid.filters=stat,wall,log4j
spring.datasource.druid.connection-properties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

在上面的配置中,我们启用了Druid的三个过滤,并设置了一些过滤器的参数。

3. 示例

3.1 示例1:使用Druid监控SQL执行情况

在上面的配置中,我们已启用了Druid的监控功能。现在我们来演示如何使用Druid监控SQL执行情况。

首先,我们在application.properties文件添加以下配置:

# Druid监控配置
spring.datasource.druid.stat-view-servlet.enabled=true
spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*
spring.datasource.druid.stat-view-servlet.login-username=admin
spring.datasource.druid.stat-view-servlet.login-password=admin

然后,我们在代码中执行一些SQL语句,例如:

@Autowired
private JdbcTemplate jdbcTemplate;

public void test() {
    String sql = "SELECT * FROM user";
    List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
    System.out.println(list);
}

最后,我们访问Druid监控页面,查看SQL执行情况。在浏览器中输入http://localhost:8080/druid,然后输入登录用户名和密码,即可进Druid监控页面。在页面中,我们可以查看SQL执行情况、连接池状态等信息。

3.2 示例2:使用Druid防御SQL注入攻击

Druid提供了一个过滤器wall,防御SQL注入攻击。以下是一个示例,演示如何使用wall过滤器:

 Druid过滤器配置
spring.druid.filters=wall
spring.datasource.druid.connection-properties=config.decrypt=true;config.decrypt.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJfzJJzJzJzJzJzJzJzJzJzJzJzJzJzJzJzJzJzJzJzJzJzJzJzJzJzJzJzJzJzJzJwIDAQAB

在上面的配置中,我们启用了wall过滤器,并设置了一些参数。然后,我们在代码中执行一些SQL语,例如:

@Autowired
private JdbcTemplate jdbcTemplate;

public void test() {
    String username = "admin'; DROP TABLE user; --";
    String password = "123456";
    String sql = "SELECT * FROM user WHERE username='" + username + "' AND password='" + password + "'";
    List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
    System.out.println(list);
}

在上面的代码中,我们故意构造了一个SQL注入攻击的语句。然而,由于我们启用了wall过滤器Druid自动防御这种攻击,保护我们的数据库不受攻击。

4.结

Druid是阿里巴巴开源一个数据库连接池和监控平台,它提供了比传统的连接池更强大的功能。Spring Boot集成Druid非常简单,只需要在pom.xml文件中添加Druid的依赖,后在application.properties文件中配置数据源即可。开发者可以根据具体需求选择合适的配置项和过滤器,以便更好地使用Druid。在使用Druid时,我们可以使用Druid的监控功能查看SQL执行情况,也可以使用Druid的过滤器防御SQL注入攻击。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot使用druid详解 - Python技术站

(0)
上一篇 2023年5月8日
下一篇 2023年5月8日

相关文章

  • win7系统减肥的详细步骤(win7瘦身再减3G空间)

    Win7系统减肥的详细步骤(Win7瘦身再减3G空间) Win7系统减肥是指通过一系列操作来减少系统占用的磁盘空间,提高系统性能。下面是一个完整的攻略,包含了详细的步骤和两个示例说明。 步骤一:清理临时文件 打开“开始”菜单,点击“计算机”。 右键点击系统盘(通常是C盘),选择“属性”。 在“常规”选项卡中,点击“磁盘清理”。 在弹出的对话框中,勾选需要清理…

    other 2023年8月1日
    00
  • SqlServer中如何解决session阻塞问题

    很抱歉,作为文本模型,我无法以标准的markdown格式回答您的问题。但是,我可以为您提供一份详细的攻略,包含解决SqlServer中session阻塞问题的方法和两个示例说明。 SqlServer中解决session阻塞问题的攻略 1. 查找阻塞会话 要解决session阻塞问题,首先需要找到正在阻塞其他会话的会话。可以使用以下方法来查找阻塞会话: SEL…

    other 2023年10月17日
    00
  • 关于Python作用域自学总结

    关于Python作用域自学总结攻略 什么是作用域? 在Python中,作用域是指变量的可访问性和可见性的范围。Python中有三种作用域:全局作用域、局部作用域和内建作用域。 全局作用域:在整个程序中都可访问的变量,定义在函数外部。 局部作用域:只在函数内部可访问的变量,定义在函数内部。 内建作用域:Python内置的函数和变量,如print()和len()…

    other 2023年8月19日
    00
  • 基于java中反射的总结分析

    下面我将为您详细讲解“基于Java中反射的总结分析”的完整攻略。 简介 反射是 Java 中一项非常重要的特性,它允许程序运行时动态地获取类的信息、调用对象的方法、访问或修改对象的属性等。反射可以使程序更加灵活,但同时也增加了代码的复杂性,因此在使用反射时需要特别小心。 反射的使用 获取类的信息 在 Java 中,可以通过以下方法获取类的信息: Class&…

    other 2023年6月27日
    00
  • 看门狗2未加密版无法进入游戏的解决方法

    下面是详细的攻略: 问题描述 如果你下载的是未加密版的看门狗2游戏,并且在启动游戏时遇到了进程出现错误的问题,则你需要按照以下步骤来解决问题。 解决方法 步骤 1:安装 VCRUNTIME140.dll 首先,我们需要安装 Microsoft Visual C++ 2015 Redistributable Update 3 RC。此软件包包含运行游戏所需的许…

    other 2023年6月27日
    00
  • 关于python:为什么不能安装cpickle

    在Python 3.x版本中,cpickle是一个用于序列化和反序列化Python对象的模块。但在某些情况下,我们可能会遇到不能安装cpickle的问题。本文详细介绍为什么会出现这个问题以及如何解决它。 为什么不能安装cpickle 在Python 3.x版本中,cpickle已经被弃用,取而代之是pickle模块。因此,在Python 3.x版本中,我们不…

    other 2023年5月7日
    00
  • vue-cli3.0配置及使用注意事项详解

    Vue CLI 3.0 配置及使用注意事项详解 Vue CLI 3.0 是一个基于 Vue.js 的官方脚手架工具,它可以帮助我们快速搭建 Vue.js 项目并进行配置。本攻略将详细介绍 Vue CLI 3.0 的配置和使用注意事项。 安装 Vue CLI 3.0 首先,我们需要安装 Vue CLI 3.0。可以使用 npm 或者 yarn 进行安装,以下是…

    other 2023年7月29日
    00
  • jquery实现加载进度条提示效果

    下面是jQuery实现加载进度条提示效果的完整攻略: 1. 引入jQuery和进度条插件 在标签中引入jQuery和进度条插件,比如nprogress: <head> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"&gt…

    other 2023年6月25日
    00
合作推广
合作推广
分享本页
返回顶部