当前位置: 首页 > news >正文

SpringBoot-Druid

目录

1.什么是Druid

2.主要优点和原因

3.误区

4.Part代码

0.pom

1.Spring.datasource.type: com.alibaba.druid.pool.DruidDataSource

2.Druid用Jasypt加密任意内容

@EnableEncryptableProperties开启加密注解

3.Druid监控平台


1.什么是Druid

Druid 是一个开源的数据库连接池和监控库,主要用于连接和管理数据库连接。它的设计目标是提供高性能、高可用性、高度可管理性的数据库连接池,适用于各种Java应用程序,特别是那些需要频繁与数据库交互的应用,如Web应用、大数据处理等。

2.主要优点和原因

  1. 连接池管理 Druid 提供了强大的连接池管理功能,可以有效地管理数据库连接的创建、销毁、复用和监控,以减少数据库连接的开销和资源浪费。

  2. 性能优化: Druid 在连接池和 SQL 执行层面进行了性能优化,包括支持预编译语句、自动识别并关闭空闲连接、连接泄漏检测等功能,以提高应用程序的性能。

  3. 监控和统计 Druid 提供了详细的监控和统计信息,包括连接池的状态、SQL执行性能、慢查询日志等,帮助开发人员和运维人员更好地理解应用的数据库访问情况,及时发现性能问题。

  4. 安全性: Druid 支持 IP 白名单、SQL 防火墙等安全功能,可以保护数据库免受恶意攻击。

  5. 适用性广泛: Druid 不仅支持 JDBC,还支持类似Spring JDBC、MyBatis、Hibernate等框架,因此适用于各种Java应用程序。

  6. 开源和活跃的社区: Druid 是开源项目,拥有活跃的社区支持,可以获得及时的更新和 bug 修复。

  7. 可扩展性: Druid 具有可扩展性,可以根据具体需求进行定制和扩展,以满足特定应用场景的要求。

总之,使用 Druid 数据库连接池的主要目的是提高数据库访问的性能、可管理性和安全性,同时提供了丰富的监控和统计信息,有助于更好地管理和维护数据库连接。当你的应用需要频繁与数据库交互时,使用 Druid 可能会显著提高应用程序的性能和可维护性。

3.误区

Druid本身不提供SQL优化功能,SQL优化通常需要依赖于数据库引擎或其他专门的SQL优化工具。可以在使用Druid连接池的应用中采取一些措施来优化SQL查询的性能;

4.Part代码

JDBC默认的DataSource实现是BasicDataSourceBasicDataSource是一个开源的、基本的DataSource实现,用于创建和管理数据库连接池。

因为使用连接池可以显著提高数据库连接的性能和资源利用率,减少连接的创建和销毁开销。

0.pom

<!--jasypt坐标-->
<dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>2.1.0</version>
</dependency><!--druid坐标-->
<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.8</version>
</dependency>

1.Spring.datasource.type: com.alibaba.druid.pool.DruidDataSource

System.out.println(dataSource.getClass());
System.out.println(dataSource.getConnection());

class com.alibaba.druid.pool.DruidDataSource
com.mysql.cj.jdbc.ConnectionImpl@32d5279

 可以看到数据源已经成功切换

2.Druid用Jasypt加密任意内容

生成密码的密文代码

@Test
void show1(){StandardPBEStringEncryptor standardPBEStringEncryptor = new StandardPBEStringEncryptor();EnvironmentPBEConfig config = new EnvironmentPBEConfig();// 加密的算法,这个算法是默认的config.setAlgorithm("PBEWithMD5AndDES");// 加密的密钥,随便自己填写,很重要千万不要告诉别人config.setPassword("apesource");standardPBEStringEncryptor.setConfig(config);//自己的密码String plainText = "xxx";String encryptedText = standardPBEStringEncryptor.encrypt(plainText);System.out.println(encryptedText);}

 使密文生效我们使用了ENC函数,并将混淆字符串的配置放到了yml当中

jasypt:encryptor:password: apesource

yml当中的格式

spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=myUsername
spring.datasource.password=ENC(密文)

@EnableEncryptableProperties开启加密注解

3.Druid监控平台

yml当中

filters: stat,wall

在Config配置类当中

  2.配置servlet@Beanpublic ServletRegistrationBean registrationBean(){//1.创建servlet注册类ServletRegistrationBean<StatViewServlet>  servletRegistrationBean =  new ServletRegistrationBean<StatViewServlet>();//2.创建制作页面的servletStatViewServlet statViewServlet = new StatViewServlet();//3.绑定servletservletRegistrationBean.setServlet(statViewServlet);servletRegistrationBean.setUrlMappings(Arrays.asList("/druid/*"));//4.参数绑定Map<String,String> maps = new HashMap<String,String>();maps.put(StatViewServlet.PARAM_NAME_USERNAME,"admin");maps.put(StatViewServlet.PARAM_NAME_PASSWORD,"123");maps.put(StatViewServlet.PARAM_NAME_ALLOW,"");//白名单maps.put(StatViewServlet.PARAM_NAME_DENY,"192.168.0.12");//黑名单servletRegistrationBean.setInitParameters(maps);return servletRegistrationBean;}//3.配置filter@Beanpublic FilterRegistrationBean filterRegistrationBean(){FilterRegistrationBean<WebStatFilter> bean = new FilterRegistrationBean<WebStatFilter>();bean.setFilter(new WebStatFilter());//所有请求进行监控处理bean.setUrlPatterns(Arrays.asList("/*"));Map<String, String> initPrams = new HashMap<>();//添加不需要忽略的格式信息initPrams.put(WebStatFilter.PARAM_NAME_EXCLUSIONS, "*.js,*.css,/druid/*");bean.setInitParameters(initPrams);return bean;}

拦截器和过滤器用到了servlet,所以要注册servlet

拦截器主要拦截以/druid/开头的

最后使用localhost://8080/就可以访问监控平台。

相关文章:

SpringBoot-Druid

目录 1.什么是Druid 2.主要优点和原因 3.误区 4.Part代码 0.pom 1.Spring.datasource.type: com.alibaba.druid.pool.DruidDataSource 2.Druid用Jasypt加密任意内容 EnableEncryptableProperties开启加密注解 3.Druid监控平台 1.什么是Druid Druid 是一个开源的数据库…...

PAT甲级真题1006:签到与签出

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的…...

【架构篇】Supabase架构和功能介绍

Supabase是什么 Supabase将自己定位为Firebase的开源替代品&#xff0c;提供了一套工具来帮助开发者构建web或移动应用程序。Supabase是建立在Postgres之上的&#xff0c;Postgres是一个免费的开源数据库&#xff0c;被认为是世界上最稳定、最先进的数据库之一。Supabase对标F…...

Github主页无法打开和Assets转圈

1、cmd启动命令行 2、github.com打不开&#xff0c;多刷新几遍。等成功打开时&#xff0c;命令行输入nslookup github.com,把非权威应答下的IP地址复制到C:\Windows\System32\drivers\etc\hosts里&#xff0c;如查到的IP是192.30.255.112&#xff0c;则填写 192.30.255.112 gi…...

rm误删文件恢复

rm误删文件恢复 问题描述安装extundeleteyum安装extundelete编译安装extundelete 常用参数动作(action)&#xff1a; 尝试数据恢复前置条件卸载磁盘分区查看被删除数据信息 恢复文件恢复指定inode号文件恢复指定文件名恢复指定目录恢复所有可恢复文件恢复指定时间的文件恢复指定…...

爬虫 — 多线程

目录 一、多任务概念二、实现多任务方式1、多进程 &#xff08;Multiprocessing&#xff09;2、多线程&#xff08;Multithreading&#xff09;3、协程&#xff08;Coroutine&#xff09; 三、多线程执行顺序四、多线程的方法1、join()2、setDaemon()3、threading.enumerate() …...

Cython 笔记 (Python/Jython)

目录 1. Cython 笔记 (Python)2. python 加速库 cython 简介2.1. Cython 是什么?2.2. 如何安装 Cython?2.3. 简单示例2.4. 性能比对2.5. 总结 3. PYTHON, CYTHON, JYTHON, IRONPYTHON 的区别 (注意: 此篇有误导&#xff0c;表述不一定正确&#xff0c;只提供一个方向)3.1. PY…...

[React] react-hooks如何使用

react-hooks思想和初衷&#xff0c;也是把组件&#xff0c;颗粒化&#xff0c;单元化&#xff0c;形成独立的渲染环境&#xff0c;减少渲染次数&#xff0c;优化性能。 文章目录 1.为什么要使用hooks2.如何使用hooks2.1 useState2.2 useEffect2.3 useLayoutEffect2.4 useRef2.5…...

多个pdf合并成一个文件,3个方法合并pdf

如何把多个pdf合并成一个文件&#xff1f;在我们日常的工作中&#xff0c;经常会遇到一些需要处理的文件&#xff0c;其中包括PDF文件。特别是当我们需要将多个PDF文件合并成一个PDF文件时&#xff0c;会面临一些困难。这样的情况下&#xff0c;我们的阅读能力会受到限制&#…...

代码随想录 动态规划Ⅸ

198. 打家劫舍 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警。 给定一个代表每个…...

【数据结构】散列表(哈希表)的学习知识总结

目录 1、散列表 2、散列函数 2.1 定义 2.2 散列函数的构造 2.2.1 除留余数法 2.2.2 直接定址法 2.2.3 数字分析法 2.2.4 平方取中法 3、冲突&#xff08;碰撞&#xff09; 4、处理冲突的方法 4.1 拉链法&#xff08;链接法&#xff09; 4.2 开放定址法 5、C语言…...

2023智慧云打印小程序源码多店铺开源版 +前端

智慧自助云打印系统/智慧云打印小程序源码 前端 这是一款全新的基于Thinkphp的最新自助打印系统&#xff0c;最新UI界面设计的云打印小程序源码...

利用亚马逊 云服务器 EC2 和S3免费套餐搭建私人网盘

网盘是一种在线存储服务&#xff0c;提供文件存储&#xff0c;访问&#xff0c;备份&#xff0c;贡献等功能&#xff0c;是我们日常中不可或缺的一种服务。很多互联网公司都为个人和企业提供免费的网盘服务。但这些免费服务都有一些限制&#xff0c;比如限制下载速度&#xff0…...

数据分析技能点-数据的种类

在日常生活中,数据无处不在。当你去超市购物时,你可能会注意到商品的价格、重量、口味等;当你在社交媒体上浏览时,你可能会注意到好友的点赞数、评论等。这些都是数据的一种形式,而了解这些数据的种类和特点有助于我们更好地理解和使用它们。 数据的基本分类 数据大致可…...

解读:ISO 14644-21:2023《洁净室及相关受控环境:悬浮粒子采样》发布指导粒子采样!

药品洁净实验室环境监测结果是否满足微生物检测需求&#xff0c;直接决定检测结果的有效性准确性&#xff0c;进行药品微生物检测&#xff0c;必须对实验环境进行日常和定期监测&#xff0c;其内容包括非生物活性的空气悬浮粒子数及有生物活性的微生物监测。 悬浮粒子监测是保证…...

Java --- MySQL8之索引优化与查询优化

目录 一、索引失效场景 1.1、全值匹配 1.2、最佳左前缀规则 1.3、主键插入顺序 1.4、计算、函数、类型转换(自动或手动)导致索引失效 1.5、类型转换导致索引失效 1.6、范围条件右边的列索引失效 1.7、不等于(! 或者<>)索引失效 1.8、is null可以使用索引&…...

澳大利亚新版《2023年消费品(36个月以下儿童玩具) 安全标准》发布 旨在降低危险小零件的伤害

2023年9月4日&#xff0c;澳大利亚政府发布了新的儿童玩具强制性安全标准《2023年消费品(36个月以下儿童玩具)安全标准》&#xff08;Consumer Goods (Toys for Children up to and including 36 Months of Age) Safety Standard 2023&#xff09;。该强制性标准旨在尽可能地降…...

表格内日期比较计算

需求&#xff1a;在表格中新增数据&#xff0c;计算开始日期中最早的和结束日期中最晚的&#xff0c;回显到下方。 <el-formref"formRef":model"ruleForm":rules"rules"style"margin-top: 20px;"label-position"top">…...

Linux内核启动流程-第二阶段start_kernel 函数

一. Linux内核启动 上一篇文章简单介绍了 Linux内核启动的第一阶段&#xff0c;即执行汇编流程。 本文简单了解一下&#xff0c;Linux内核启动的第二阶段&#xff1a;start_kernel函数&#xff0c;这是一个 C 函数。 本文续上一篇文章的学习&#xff0c;地址如下&#xff1a;…...

Disruptor:无锁队列设计的背后原理

简介 在高并发场景下&#xff0c;队列的速度和效率是关键。而Disruptor&#xff0c;一种高性能的并发队列&#xff0c;通过独特的设计&#xff0c;解决了传统队列在处理高并发时可能遇到的性能瓶颈。本文将深入分析Disruptor如何通过环形数组结构、元素位置定位以及无锁设计&a…...

ANSYS CFX 自定义函数实战:数据导入与变量创建全流程

1. ANSYS CFX自定义函数入门指南 第一次接触CFX自定义函数时&#xff0c;我也被那一堆参数和选项搞得晕头转向。但实际用下来发现&#xff0c;这玩意儿就像给计算流体力学(CFD)分析装了个"外挂"&#xff0c;能让你在标准功能之外实现各种个性化需求。简单来说&#x…...

OpenCV实战:从相机响应函数(CRF)到HDR图像合成的完整流程解析

1. 相机响应函数(CRF)基础解析 第一次听说相机响应函数(CRF)时&#xff0c;我也是一头雾水。简单来说&#xff0c;CRF就是描述相机如何把真实世界的光线强度(L)转换成图像像素值(B)的数学关系。想象一下&#xff0c;你拿着手机对着同一个场景拍三张照片&#xff1a;一张很暗、一…...

ThinkPHP6(TP6)控制器404问题排查与Nginx伪静态配置指南

1. 为什么你的TP6控制器总是404&#xff1f; 最近帮朋友排查一个ThinkPHP6项目&#xff0c;明明控制器写得没问题&#xff0c;路由也配置了&#xff0c;但一访问就蹦出个404页面。这种问题在新手部署TP6时特别常见&#xff0c;尤其是用Nginx服务器的环境。我自己第一次用TP6时也…...

Stable-Diffusion-v1-5-archive多风格生成效果:复古海报/科技感UI/手绘插画实拍

Stable Diffusion v1.5 Archive多风格生成效果&#xff1a;复古海报/科技感UI/手绘插画实拍 1. 模型介绍与核心能力 Stable Diffusion v1.5 Archive是经典SD1.5文生图模型的归档版本&#xff0c;作为AI图像生成领域的"常青树"&#xff0c;它依然保持着强大的通用图…...

N_m3u8DL-CLI-SimpleG:让M3U8视频下载变得简单高效的图形化工具

N_m3u8DL-CLI-SimpleG&#xff1a;让M3U8视频下载变得简单高效的图形化工具 【免费下载链接】N_m3u8DL-CLI-SimpleG N_m3u8DL-CLIs simple GUI 项目地址: https://gitcode.com/gh_mirrors/nm3/N_m3u8DL-CLI-SimpleG 在数字内容日益丰富的今天&#xff0c;我们经常遇到需…...

KityMinder:可视化思维的协作引擎 | 高效工作者必备工具

KityMinder&#xff1a;可视化思维的协作引擎 | 高效工作者必备工具 【免费下载链接】kityminder 百度脑图 项目地址: https://gitcode.com/gh_mirrors/ki/kityminder 在信息爆炸的时代&#xff0c;如何将零散的想法系统化、复杂的项目结构化&#xff1f;作为一款开源免…...

一、BLE入门:从广播信道到报文解析,构建无线连接基石

1. BLE技术入门&#xff1a;无线世界的敲门砖 第一次接触BLE技术时&#xff0c;我完全被那些专业术语搞懵了。什么广播信道、报文解析&#xff0c;听起来就像天书一样。但当我真正动手调试一个智能手环项目后&#xff0c;才发现BLE其实就像两个人在嘈杂的教室里传纸条——需要…...

Matlab_Simulink与Carsim的联合仿 擅长基于群智能算法优化的LQR、PID控制算法,能清晰讲解其中要点哦。对于基于群智能算法的一般路径规划

Matlab/Simulink与Carsim的联合仿 擅长基于群智能算法优化的LQR、PID控制算法&#xff0c;能清晰讲解其中要点哦。对于基于群智能算法的一般路径规划 稍长智能车轨迹跟踪控制方向 熟悉Matlab/Simulink和Carsim的联合仿真呢。这是一个非常专业且热门的研究方向&#xff08;群智能…...

从零到一:NS2网络模拟器实战部署与场景构建指南

1. NS2网络模拟器入门指南 第一次接触NS2的朋友可能会被这个老牌网络模拟器的配置过程吓到。我刚开始用的时候&#xff0c;光是解决依赖问题就折腾了两天。不过别担心&#xff0c;跟着我的步骤走&#xff0c;你可以在半小时内完成基础环境搭建。 NS2本质上是一个离散事件网络模…...

别再用FIFO了!AXI4-Stream CDC场景下,寄存器管道(Register Slice)模式实战与避坑

别再用FIFO了&#xff01;AXI4-Stream CDC场景下寄存器管道模式的实战精要 在FPGA和SoC设计中&#xff0c;跨时钟域&#xff08;CDC&#xff09;数据传输一直是个让人头疼的问题。每当遇到不同时钟域间的数据同步&#xff0c;大多数工程师的第一反应就是掏出一个FIFO来解决。这…...