Spring Boot集成Druid快速入门Demo

news/2024/11/13 10:06:43/

1.什么是Druid?

Druid连接池是阿里巴巴开源的数据库连接池项目。Druid连接池为监控而生,内置强大的监控功能,监控特性不影响性能。功能强大,能防SQL注入,内置Loging能诊断Hack应用行为。

2.mysql环境搭建

第一个mysql数据库

docker run --name docker-mysql-5.7 -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:5.7

初始化数据

create database demo;
create table user_info
(
user_id     varchar(64)          not null primary key,
username    varchar(100)         null ,
age         int(3)               null ,
gender      tinyint(1)           null ,
remark      varchar(255)         null ,
create_time datetime             null ,
create_id   varchar(64)          null ,
update_time datetime             null ,
update_id   varchar(64)          null ,
enabled     tinyint(1) default 1 null
);
INSERT INTO demo.user_info
(user_id, username, age, gender, remark, create_time, create_id, update_time, update_id, enabled)
VALUES('1', '1', 1, 1, '1', NULL, '1', NULL, NULL, 1);

说明

msyql账号root
mysql密码123456

3.代码工程

实验目的:使用druid连接mysql数据库

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>springboot-demo</artifactId><groupId>com.et</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>druid</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.1</version></dependency><dependency><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-core</artifactId><version>1.4.0</version><scope>provided</scope></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.0</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency></dependencies><!--Mybatis代码自动生成器--><build><plugins><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.4.0</version><dependencies><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version><!--  <version> 5.1.39</version>  --></dependency></dependencies><executions><execution><id>Generate MyBatis Artifacts</id><phase>package</phase><goals><goal>generate</goal></goals></execution></executions><configuration><!--允许移动生成的文件 --><verbose>true</verbose><!-- 是否覆盖 --><overwrite>true</overwrite><!-- 自动生成的配置 --><configurationFile>src/main/resources/mybatis-generator.xml</configurationFile></configuration></plugin></plugins></build>
</project>

durid配置

java">package com.et.druid.config;import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import javax.sql.DataSource;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;@Configuration
public class DruidConfig {@Bean@ConfigurationProperties(prefix = "spring.datasource")public DataSource getDataSource(){return new DruidDataSource();}// 配置Druid监控// 配置一个管理后台的Servlet@Beanpublic ServletRegistrationBean statViewServlet(){ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");Map<String,String> initParams=new HashMap<>();initParams.put("loginUsername","admin");initParams.put("loginPassword","admin");initParams.put("allow","");  // 默认就是允许所有访问// initParams.put("deny","127.0.0.1"); // 拒绝哪个网址访问,优先级大于allowbean.setInitParameters(initParams);return bean;}//2、配置一个web监控的filter@Beanpublic FilterRegistrationBean webStatFilter(){FilterRegistrationBean bean = new FilterRegistrationBean();bean.setFilter(new WebStatFilter());Map<String,String> initParams = new HashMap<>();// 配置不拦截哪些请求initParams.put("exclusions","*.js,*.css,/druid/*");bean.setInitParameters(initParams);// 配置拦截所有请求bean.setUrlPatterns(Arrays.asList("/*"));return  bean;}
}

application.properties

server.port=8088
spring.datasource.url=jdbc:mysql://localhost:3306/demo?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
mybatis.mapper-locations=classpath:mapper/*.xml

mybatis代码生成配置

<!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration><context id="Mysql" targetRuntime="MyBatis3Simple" defaultModelType="flat"><plugin type="org.mybatis.generator.plugins.SerializablePlugin"/><!--配置数据源--><jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"connectionURL="jdbc:mysql://localhost:3306/demo"userId="root"password="123456"></jdbcConnection><!--配置实体类存放的目录--><javaModelGenerator targetPackage="com.et.druid.entity"targetProject="src/main/java"/><!--配置mapper.xml文件存放的目录--><sqlMapGenerator targetPackage="mapper"targetProject="src/main/resources"/><!--配置mapper接口文件存放的目录--><javaClientGenerator targetPackage="com.et.druid.mapper"targetProject="src/main/java"type="XMLMAPPER"/><!--配置需要自动生成的表名  --><table tableName="user_info"><property name="modelOnly" value="false"/></table></context>
</generatorConfiguration>

点击Maven生成代码abe8c5f3eb1bd8d9fded3e1ccf598994.png

启动类

java">package com.et.druid;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
@MapperScan(value = "com.et.druid.mapper")
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}
}

以上只是一些关键代码,所有代码请参见下面代码仓库

代码仓库

  • https://github.com/Harries/springboot-demo

4.测试

启动Spring Boot应用

druid监控地址

浏览器访问:http://localhost:8088/druid/index.htmldc2e828f6dc3f42991b85bbfec981456.png

测试接口是否正常

浏览器访问:http://127.0.0.1:8088/hello,返回表里面的信息

[{"userId":"1","username":"1","age":1,"gender":true,"remark":"1","createTime":null,"createId":"1","updateTime":null,"updateId":null,"enabled":true}]

5.参考引用

  • https://jueee.github.io/2020/10/2020-10-30-SpringBoot%E9%9B%86%E6%88%90Druid/

  • https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter

  • http://www.liuhaihua.cn/archives/710500.html


http://www.ppmy.cn/news/1460753.html

相关文章

Gartner发布准备应对勒索软件攻击指南:勒索软件攻击的三个阶段及其防御生命周期

攻击者改变了策略&#xff0c;在某些情况下转向勒索软件。安全和风险管理领导者必须通过提高检测和预防能力来为勒索软件攻击做好准备&#xff0c;同时还要改进其事后应对策略。 主要发现 勒索软件&#xff08;无加密的数据盗窃攻击&#xff09;是攻击者越来越多地使用的策略。…

机器人系统ros2内部接口介绍

内部 ROS 接口是公共 C API &#xff0c;供创建客户端库或添加新的底层中间件的开发人员使用&#xff0c;但不适合典型 ROS 用户使用。 ROS客户端库提供大多数 ROS 用户熟悉的面向用户的API&#xff0c;并且可能采用多种编程语言。 内部API架构概述 内部接口主要有两个&#x…

数据分析师方差分析,单因素方差分析、多因素方差分析、协方差分析和重复测量方差分析,医学数据分析spss

单因素方差分析、多因素方差分析、协方差分析和重复测量方差分析在统计学中各有其特定的适用场景。 单因素方差分析&#xff08;One-way ANOVA&#xff09;&#xff1a;适用于检验单因素水平下的一个或多个独立因变量均值是否存在显著差异&#xff0c;即检验单因素各个水平的值…

CentOs搭建Kubernetes集群

kubeadm minikube 还是太“迷你”了&#xff0c;方便的同时也隐藏了很多细节&#xff0c;离真正生产环境里的计算集群有一些差距&#xff0c;毕竟许多需求、任务只有在多节点的大集群里才能够遇到&#xff0c;相比起来&#xff0c;minikube 真的只能算是一个“玩具”。 Kuber…

qt 窗体嵌入到任务栏

qwidget嵌入到任务栏 #include <QApplication> #include <QWidget> #include <QDebug> #include <windows.h> #include <QVBoxLayout> // 包含 QVBoxLayout 头文件 #include <QLabel> #include <QLineEdit>int main(int argc, char…

钩子函数onMounted定义了太多访问MySQL的操作 导致数据库异常

先放几种后端遇到的异常&#xff0c;多数和数据库有关 pymysql.err.InternalError: Packet sequence number wrong - got 102 expected 1 127.0.0.1 - - [09/May/2024 17:49:37] "GET /monitorLastTenList HTTP/1.1" 500 AttributeError: NoneType object has no at…

鸿蒙应用开发系列 EX篇:HarmonyOS应用开发者基础认证

文章目录 系列文章背景认证考试题库参考注意:题库会不定时的进行具备调整甚至整体轮换,此为2024.5月版本注意:题库中题目的选项每次都会随机顺序,请参考内容判断题单选题多选题系列文章 鸿蒙应用开发系列 篇一:鸿蒙系统概述 鸿蒙应用开发系列 篇二:鸿蒙系统开发工具与环…

【静态分析】软件分析课程实验A2-常量传播和Worklist求解器

Tai-e官网&#xff1a; 概述 | Tai-e 参考&#xff1a; https://www.cnblogs.com/gonghr/p/17979609 -------------------------------------------------------- 1 作业导览 为 Java 实现常量传播算法。实现一个通用的 worklist 求解器&#xff0c;并用它来解决一些数据…