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日

相关文章

  • Android自定义选项卡切换效果

    下面我来详细讲解“Android自定义选项卡切换效果”的完整攻略。这个过程可以分为以下几个步骤: 步骤一:创建一个TabLayout 首先需要在布局文件中创建一个TabLayout,它是用来放置选项卡的。可以选择使用系统自带的TabLayout,也可以使用第三方库。以下是一个使用系统自带的TabLayout的示例: <com.google.androi…

    other 2023年6月25日
    00
  • nginx的url重写

    Nginx的URL重写 Nginx是目前非常流行的Web服务器软件,同时也是一个高性能的反向代理服务器。在Nginx中,我们经常会使用URL重写功能来实现比较灵活的URL转换和重定向。本文将介绍Nginx中的URL重写功能及其常用的用法。 什么是URL重写 URL重写是指将一个URL地址转换为另一个URL地址的过程,同时在转换的过程中可以修改URL中的参数、…

    其他 2023年3月28日
    00
  • C++实现简单贪吃蛇游戏

    让我来详细讲解“C++实现简单贪吃蛇游戏”的完整攻略。 1. 确定游戏框架 首先,我们需要确定游戏的框架,也就是游戏画面的表示方法。我们可以使用命令行或者图形界面库来创建游戏画面。在这里我会以控制台窗口作为游戏画面的表示方法。 2. 设计游戏逻辑 接下来,我们需要设计游戏的逻辑。贪吃蛇游戏的逻辑很简单,玩家通过控制蛇的移动方向,让蛇吃食物并不断增长,同时要避…

    other 2023年6月26日
    00
  • oraclescn详解

    oraclescn详解的完整攻略 oraclescn是Oracle数据库中的一个系统表,它包含了Oracle数据库中所有的对象信息。本文将介绍oraclescn的定义、方法和两个示例说明。 orcn的定义 oraclescn是Oracle数据库中的一个系统表,它包含了Oracle数据库中所有的对象信息。oraclescn表的定义如下: CREATE TABL…

    other 2023年5月9日
    00
  • 常用yum操作命令

    当然,我很乐意为您提供有关“常用yum操作命令”的完整攻略。以下是详细的步骤和两个示例: 1. 什么是yum? yum是CentOS和Red Hat Enterprise Linux(RHEL)中的包管理器,用于安装、更新和删除软件包。它可以自动解决依赖关系,并从软件仓库中下载和安装软件包。 2. 常用yum操作命令 以下是常用的yum操作命令: 2.1 安…

    other 2023年5月6日
    00
  • 思科Cisco路由器与交换机配置——配置文件和系统映像备份与恢复实验案例详解

    思科Cisco路由器与交换机配置——配置文件和系统映像备份与恢复实验案例详解 实验背景 在网络设备的配置中,配置文件和系统映像是很重要的一部分。因为在配置时可能存在失误或异常情况,而且随着设备的使用,系统映像也会逐渐老化,这些问题都可能会导致设备无法正常工作。因此,备份设备的配置文件和系统映像,以便恢复配置或者更新系统,就显得尤为重要。 实验目的 熟练掌握备…

    other 2023年6月25日
    00
  • python 面向对象之class和封装

    Python 面向对象之 class 和封装 Python 是一种面向对象的编程语言,使用面向对象的思想可以更好地组织和管理代码,提高代码的可维护性和可复用性。在 Python 中,class 是面向对象的重要组成部分,而封装则是实现面向对象的重要机制之一。 class class 是 Python 中面向对象编程的基础组成部分,可以通过 class 来定义…

    other 2023年6月25日
    00
  • Win11系统如何添加辅助和多个IP地址

    Win11系统如何添加辅助和多个IP地址攻略 1. 打开网络和Internet设置 首先,我们需要打开Win11系统的网络和Internet设置。可以通过以下步骤完成: 点击任务栏右下角的网络图标,打开网络和Internet设置。 2. 打开网络设置 在网络和Internet设置页面,我们需要打开网络设置。请按照以下步骤进行操作: 在左侧导航栏中,点击“网络…

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