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日

相关文章

  • springboot整合mybatis-plus逆向工程的实现

    Spring Boot整合MyBatis-Plus逆向工程的实现攻略 简介 MyBatis-Plus是一个强大的Java持久层框架,提供了逆向工程(Reverse Engineering)功能,可以根据数据库表结构自动生成实体类、Mapper接口、Service接口等代码,极大地提高了开发效率。 步骤 以下是使用Spring Boot整合MyBatis-Pl…

    other 2023年10月13日
    00
  • Windows中的批处理的常用符号介绍

    下面是Windows中的批处理的常用符号介绍的完整攻略。 批处理符号介绍 批处理文件是面向计算机的一个命令脚本,可以自动化完成某一系列操作。在编写批处理脚本时,需要掌握一些特殊符号来完成某些操作。 echo echo命令可以输出文本信息到屏幕上,语法如下: echo <字符串> 示例: 假设要输出“Hello World!”到屏幕上,可以使用以下…

    other 2023年6月26日
    00
  • springboot中项目启动时实现初始化方法加载参数

    实现Spring Boot项目启动时加载初始化方法,我们可以通过使用Spring框架的InitializingBean接口或者通过@PostConstruct注解等方式来实现。 下面,我将为您详细解释如何使用这两种方式来实现初始化方法加载参数。 一、使用InitializingBean 如果我们想在Spring Boot项目启动时执行初始化方法,可以实现In…

    other 2023年6月20日
    00
  • Android最新版本开发环境搭建图文教程

    以下是“Android最新版本开发环境搭建图文教程”的完整攻略。 Android最新版本开发环境搭建图文教程 概述 本文介绍了在Windows环境下搭建最新版Android开发环境的步骤和注意事项。开发环境包括Android Studio和相关的开发工具,如SDK和NDK。 步骤 1. 安装Java JDK 在安装Android Studio和相关的开发工具…

    other 2023年6月27日
    00
  • 晋江小说阅读如何注销账号? 注销晋江账号的技巧

    晋江小说阅读如何注销账号 步骤1:登录晋江网站 首先进入晋江小说网站,登录自己的账号。 步骤2:进入个人中心 点击网页右上角的“个人中心”按钮,进入个人中心页面。 步骤3:进入账户设置页面 在个人中心页面,点击“账户设置”选项,进入设置页面。 步骤4:注销账户 在账户设置页面上部,会有注销账户的按钮,点击它,弹出提示框,点击确认即可注销账户。 步骤5:验证身…

    other 2023年6月27日
    00
  • VMware配置虚拟机静态IP地址的方法

    VMware配置虚拟机静态IP地址的方法 在VMware中,配置虚拟机的静态IP地址可以确保虚拟机在网络中保持固定的IP地址,而不是依赖于DHCP服务器分配的动态IP地址。下面是配置虚拟机静态IP地址的完整攻略。 步骤一:打开虚拟机设置 打开VMware虚拟机,并选择要配置静态IP地址的虚拟机。 在VMware菜单栏中,选择“编辑”>“虚拟机设置”。 …

    other 2023年7月30日
    00
  • asp.net水晶报表参数字段在代码中赋值的方法

    针对“asp.net水晶报表参数字段在代码中赋值的方法”的问题,我来详细讲解一下。 1. 在水晶报表设计器中添加参数字段 首先,在水晶报表设计器中添加需要用到的参数字段。具体操作方式如下: 在报表设计器中选中“参数字段”。 点击“新建”按钮,在弹出的新建参数对话框中设置参数名称、数据类型等属性。 完成参数的配置后,单击“确定”按钮,参数字段就会被添加到报表设…

    other 2023年6月26日
    00
  • C语言单向链表的表示与实现实例详解

    C语言单向链表的表示与实现实例详解 介绍 单向链表是一种常见的数据结构,它由若干个节点构成,每个节点包含一个数据域和一个指向下一个节点的指针。单向链表通常用于需要频繁插入、删除节点的场景,如操作系统的进程调度、内存管理等。 本文将介绍C语言中单向链表的表示和实现,包括链表的定义、插入节点、删除节点等操作。 链表的定义 在C语言中,链表通常由一个结构体表示,该…

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