
SpringBoot 2.x系列
文章平均质量分 72
相对于传统的 SpringMVC 开发模式,SpringBoot 的门槛极低,开箱即用。本系列以实战为线索,分享一系列的
SpringBoot 自学教程,希望可以帮助到 SpringBoot 的初学者
Asurplus
我每天睡醒了就去打工,打完工就回去睡觉
展开
-
【SpringBoot】97、SpringBoot中使用EasyExcel导出/导入数据
EasyExcel重写了poi对07版Excel的解析,一个3M的excel用POI sax解析依然需要100M左右内存,改用easyexcel可以降低到几M,并且再大的excel也不会出现内存溢出;03版依赖POI的sax模式,在上层做了模型转换的封装,让使用者更加简单方便原创 2024-09-18 21:47:27 · 501 阅读 · 0 评论 -
【SpringBoot】96、SpringBoot中使用RedisTemplate的scan方法查找所有的key
SCAN 命令是一个基于游标的迭代器,每次被调用之后, 都会向用户返回一个新的游标, 用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游标参数, 以此来延续之前的迭代过程原创 2024-09-06 14:23:40 · 631 阅读 · 0 评论 -
【SpringBoot】95、SpringBoot中使用MyBatis-Plus实现自动加密存储和查询自动解密
有的业务需要将敏感数据加密存储到 DB,如果我们每个都手动去加密,再设值,再保存 DB,不仅麻烦,还对每个开发者不友好,在 MyBatis-Plus 中我们可以使用 BaseTypeHandler 来解决这个问题原创 2024-07-11 15:16:54 · 1004 阅读 · 0 评论 -
【SpringBoot】94、SpringBoot中使用MyBatis-Plus实现数据权限管理
数据权限是指在特定场景下,对数据的访问、使用、共享等操作的权限。它涉及到系统用户能看到哪些范围内的数据,以及这些用户如何操作这些数据原创 2024-06-13 16:35:31 · 765 阅读 · 2 评论 -
【SpringBoot】93、SpringBoot中使用Jasypt实现配置文件中敏感数据加密
Jasypt(Java Simplified Encryption)是一个 Java 库,它允许开发人员以最小的努力为项目添加基本的加密功能,而无需深入了解密码学的工作原理原创 2024-05-17 10:09:25 · 533 阅读 · 0 评论 -
【SpringBoot】92、SpringBoot中使用SSE实现服务端向客户端推送实时消息
在Spring Boot中整合Server-Sent Events (SSE) 是一种简单且有效的方法,用于实现服务器向客户端推送实时更新的功能。SSE 是一种服务器到客户端的单向通信协议,允许服务器推送消息到客户端,而不需要客户端发出请求。原创 2024-04-26 10:49:22 · 1789 阅读 · 1 评论 -
【SpringBoot】91、SpringBoot解决Mybatis-Plus生成雪花ID重复问题
只要 workerId 和 dataCenterId 不同时重复,生成的雪花 ID 就不会重复。这是因为每个 ID 都是唯一的,并且是根据特定的算法生成的原创 2023-12-21 15:24:00 · 3240 阅读 · 0 评论 -
【SpringBoot】90、SpringBoot中@Value(“${...}“)的使用细节
@Value 注解可以用来将外部的值动态注入到 Bean 中,注入配置文件中的配置参数、注入文件资源、注入URL资源等,我们还可以使用自定义注解实现统一注入管理原创 2023-09-20 15:25:46 · 30749 阅读 · 0 评论 -
【SpringBoot】89、SpringBoot中使用@Transactional进行事务管理
事务是一组组合成逻辑工作单元的操作,虽然系统中可能会出错,但事务将控制和维护事务中每个操作的一致性和完整性。原创 2023-08-15 10:27:33 · 36347 阅读 · 0 评论 -
【SpringBoot】88、SpringBoot中使用Undertow替代Tomcat容器
Undertow是由Red Hat公司开发的一个轻量级的Web服务器,它是基于NIO(Non-Blocking IO)技术实现的,因此它的性能非常出色。Undertow提供了全面的HTTP和HTTPS支持,并且支持WebSocket、Servlet、SPDY等多种协议和技术。它还提供了易于使用的API和内置的安全性特性,如SSL/TLS等。Undertow是一个灵活、可扩展的Web服务器,它可以与其他技术、框架和工具无缝集成。原创 2023-08-11 15:25:32 · 37007 阅读 · 0 评论 -
【SpringBoot】87、SpringBoot中集成Redisson实现Redis分布式锁
Redisson 是架设在 Redis 基础上的一个 Java 驻内存数据网格(In-Memory Data Grid)原创 2023-08-11 15:04:28 · 36157 阅读 · 0 评论 -
【SpringBoot】86、SpringBoot中集成Quartz根据Cron表达式获取接下来5次执行时间
本篇文章根据集成 Quartz 根据 Cron 表达式获取接下来的 5 次执行时间,在配置定时任务时,可以清晰地知道自己的 Cron 表达式是否正确,对于 Quartz 不熟悉的同学可以先看看我之前的文章。原创 2023-08-04 11:43:00 · 36075 阅读 · 0 评论 -
【SpringBoot】85、SpringBoot中Boolean类型数据转0/1返回序列化配置
在 SpringBoot 中,前端传参数 0,1,后端可自动解析为 boolean 类型,但后端返回前端 boolean 类型时,却无法自动转换为 0,1,所以我们需要自定义序列化配置,将 boolean 类型转化为 0,1原创 2023-07-31 10:56:18 · 37383 阅读 · 0 评论 -
【SpringBoot】84、SpringBoot中MVC处理异常的多种方式
介绍了SpringBoot中MVC处理异常的多种方式原创 2023-07-10 14:30:52 · 36031 阅读 · 0 评论 -
【SpringBoot】83、SpringBoot集成Quartz实现调度日志收集
Quartz 是一个开源的作业调度框架,它完全由 Java 写成,并设计用于 J2SE 和 J2EE 应用中。它提供了巨大的灵 活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件,EJB 作业预构 建,JavaMail 及其它,支持 cron-like 表达式等等原创 2023-06-29 14:57:55 · 36052 阅读 · 0 评论 -
【SpringBoot】82、SpringBoot集成Quartz实现动态管理定时任务
Quartz 是一个开源的作业调度框架,它完全由 Java 写成,并设计用于 J2SE 和 J2EE 应用中。它提供了巨大的灵 活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。它有很多特征,如:数据库支持,集群,插件,EJB 作业预构 建,JavaMail 及其它,支持 cron-like 表达式等等原创 2023-06-29 14:49:48 · 37136 阅读 · 0 评论 -
【SpringBoot】81、SpringBoot多模块项目集成MyBatis-Plus实现动态获取IService对象
在多模块项目中,我们将不同业务的代码放在不同的模块,我的做法是,将数据库对象统一放在 model 模块,然后各个业务模块的数据库对象在 model 模块中再分多个子模块原创 2023-06-29 14:22:22 · 36131 阅读 · 0 评论 -
【SpringBoot】80、SpringBoot中自定义格式化时间返回前端
springboot中时间自定义格式化处理原创 2023-06-20 11:55:33 · 35710 阅读 · 1 评论 -
【SpringBoot】79、SpringBoot中返回JS长整型数据丢失精度问题
我们在给前端返回数据时,雪花 ID、时间戳等长度超过 JS 中最大值时,会发生精度丢失问题原创 2023-06-20 11:40:24 · 35839 阅读 · 1 评论 -
【SpringBoot】78、SpringBoot中整合JWT实现Token验证(过滤器篇)
整合篇参考:【SpringBoot】44、SpringBoot中整合JWT实现Token验证(整合篇)自定义注解篇参考:【SpringBoot】45、SpringBoot中整合JWT实现Token验证(注解篇)拦截器篇参考:【SpringBoot】46、SpringBoot中整合JWT实现Token验证(拦截器篇)1、...原创 2023-06-16 09:51:22 · 35940 阅读 · 0 评论 -
【SpringBoot】77、SpringBoot中使用Redis缓存LocalDateTime反序列异常
SpringBoot中使用Redis缓存LocalDateTime反序列异常问题原创 2023-05-17 10:17:59 · 35841 阅读 · 0 评论 -
【SpringBoot】76、SpringBoot中使用JPA作为数据持久化框架
JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。原创 2023-03-16 22:22:14 · 96011 阅读 · 0 评论 -
【SpringBoot】75、SpringBoot中使用spring-retry轻松解决重试
在日常开发过程中,难免会与第三方接口发生交互,例如:短信发送、远程服务调用、争抢锁等场景,当正常调用发生异常时,例如:网络抖动,这些间歇性的异常在一段时候之后会自行恢复,程序为了更加健壮并且更不容易出现故障,需要重新触发业务操作,以防止间歇性的异常对程序照成的影响。常用的重试策略,比如通过 while 循环手动重复调用或是通过 JDK/CGLib 动态代理的方式来进行重试。但是这种方法比较笨重,且对原有逻辑代码的入侵性比较大。原创 2023-02-16 20:18:30 · 171790 阅读 · 0 评论 -
【SpringBoot】74、SpringBoot中整合MyBatis-Plus-Join使用联表查询
联表查询一直是 mybatis-plus 的短板之处,当需要联表查询时,还得打开 xml 文件写入长长的 sql 语句原创 2022-12-14 16:46:05 · 211226 阅读 · 0 评论 -
【SpringBoot】73、SpringBoot中使用AOP+反射将URL参数映射到实体入参
我们有时候的全局参数是根据 URL 传递的,例如:token、timestamp 等,我们需要获取 URL 上的参数进行处理,但又需要跟随这实体参数进行传递,手动赋值显得不够智能,所以通过 AOP + 反射的方式对其进行自动注入原创 2022-12-07 13:34:25 · 209776 阅读 · 0 评论 -
【SpringBoot】72、SpringBoot中接入轻量级分布式日志框架Graylog
Graylog 是一个开源的日志聚合、分析、审计、展现和预警工具。在功能上来说,和 ELK 类似,但又比 ELK 要简单很多。依靠着更加简洁,高效,部署使用简单的优势很快受到许多人的青睐。当然,在扩展性上面确实没有ELK好,但是其有商业版本可以选择原创 2022-10-26 20:26:10 · 210378 阅读 · 2 评论 -
【SpringBoot】71、SpringBoot中整合Dynamic-Datasource实现多数据源+动态数据源
dynamic-datasource-spring-boot-starter 是一个基于 springboot 的快速集成多数据源的启动器原创 2022-10-20 15:23:59 · 212767 阅读 · 0 评论 -
【SpringBoot】70、SpringBoot实现MySQL数据库自动备份管理系统
最近写了一个 MySQL 数据库自动、手动备份管理系统开源项目,想跟大家分享一下,项目地址:https://gitee.com/asurplus/db-backup原创 2022-08-12 10:34:15 · 209748 阅读 · 7 评论 -
【SpringBoot】69、SpringBoot中Event事件发布与监听
事件的发布监听机制类似于观察者模式,利用事件的监听机制可以实现业务的发起与业务的处理解耦,更能体现单一职责原则,例如:新用户注册,我们需要发送邮件通知用户,触发了注册事件,监听者就能监听到注册事件,进行后续操作...原创 2022-06-21 21:30:56 · 208249 阅读 · 2 评论 -
【SpringBoot】68、SpringBoot解决HttpServletRequest中输入流不能重复读的问题
Java 中的输入流 InputStream 的 read() 方法中有一个标志位 postion,标志当前流读取到的位置,每读取一次,位置就会移动一次,如果读到最后,InputStream.read() 方法会返回-1,标志已经读取完了,如果想再次读取,可以调用 inputstream.reset() 方法,position 就会移动到上次调用 mark 的位置,mark 默认是 0,所以就能从头再读了。...原创 2022-06-21 11:31:07 · 209316 阅读 · 0 评论 -
【SpringBoot】67、SpringBoot使用ip2region获取地理位置信息
ip2region,准确率99.9%的离线IP地址定位库,0.0x毫秒级查询,数据库文件大小只有1.5M,提供了java,php,c,python,nodejs,golang,c#等查询绑定和Binary,B树,内存三种查询算法原创 2022-06-21 09:36:04 · 209413 阅读 · 0 评论 -
【SpringBoot】66、SpringBoot使用自定义注解实现返回数据脱敏操作
在实际项目中,对于敏感数据的保护显得十分重要,数据脱敏又称数据去隐私化或数据变形,是在给定的规则、策略下对敏感数据进行变换、修改的技术机制,能够在很大程度上解决敏感数据在非可信环境中使用的问题。本文使用自定义注解,在返回数据给前端的时候,根据给定的脱敏规则实现敏感数据脱敏操作,实现过程非常简单,一起来看看吧!...原创 2022-06-20 10:53:51 · 209751 阅读 · 3 评论 -
【SpringBoot】65、SpringBoot整合Canal+RabbitMQ监听MySQL实现数据同步更新Redis缓存
canal 简介早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。基于日志增量订阅和消费的业务包括:数据库镜像数据库实时备份索引构建和实时维护(拆分异构索引、倒排索引等)业务 cache 刷新带业务逻辑的增量数据处理MySQL的binlog简介MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所原创 2022-05-07 11:36:04 · 209004 阅读 · 0 评论 -
【SpringBoot】64、SpringBoot中集成企业微信机器人实现运维报警
在企业运营中,为了实现工作效率和执行效率的提升,往往会选择在社群中使用群聊机器人进行协助管理。机器人可以定时或者按照一定的规则给群里发信息并@群成员等。群聊机器人可以活跃气氛,关怀员工比如根据天气情况提醒员工注意天气变化,发送节日、生日祝福等。它也可以进行工作提醒,帮助员工更好的做系统化的回报总结,机器人可以依托业务系统,每天定时发送工作总结给对应负责人,帮助员工更好地复盘工作。1、注册企业微信注册地址:https://work.weixin.qq.com/wework_admin/register_原创 2022-05-06 16:32:58 · 210427 阅读 · 1 评论 -
【SpringBoot】63、SpringBoot中教你手把手封装自己的starter(xxl-job-spring-boot-starter)
1、starter 命令规范1、官方提供的 starterspring-boot-starter-{name}2、自己封装的 starter{name}-spring-boot-starter2、封装 xxl-job-spring-boot-starter1、创建项目本次我们封装的是 xxl-job的starter,项目命令为 xxl-job-spring-boot-starter,目录结构如下:2、引入 pom.xml<?xml version="1.0" enc原创 2022-05-04 19:49:36 · 210135 阅读 · 0 评论 -
【SpringBoot】62、SpringBoot中接入xxl-job实现分布式任务调度
XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。1、下载 xxl-jobgitee 地址:https://gitee.com/xuxueli0323/xxl-job文档地址:https://www.xuxueli.com/xxl-job/2、启动 xxl-job从 gitee 上下载 xxl-job,使用 IDEA 工具打开,目录如下:代码中已经有了 SpringBoot 的整合实例,是学习原创 2022-04-28 16:12:32 · 209751 阅读 · 0 评论 -
【SpringBoot】61、SpringBoot中使用谷歌身份验证器(Google Authenticator)实现二步身份验证
Google身份验证器Google Authenticator是谷歌推出的基于时间的一次性密码(Time-based One-time Password,简称TOTP),只需要在手机上安装该APP,就可以生成一个随着时间变化的一次性密码,用于帐户验证。Google身份验证器是一款基于时间与哈希的一次性密码算法的两步验证软件令牌,此软件用于Google的认证服务。此项服务所使用的算法已列于RFC 6238和RFC 4226中。1、安装谷歌身份验证器苹果用户在App Store搜索google au原创 2022-04-21 10:30:02 · 212758 阅读 · 7 评论 -
【SpringBoot】60、SpringBoot中整合RabbitMQ实现延时队列(死信队列篇)
前面在文章:【SpringBoot】43、SpringBoot中整合RabbitMQ实现延时队列(插件篇) 中使用 RabbitMQ 的延时插件 rabbitmq_delayed_message_exchange 来实现延时队列,本篇讲述使用死信队列实现延时队列的原理即实现。一、实现原理1、什么是死信队列死信队列:DLX,dead-letter-exchange利用DLX,当消息在一个队列中变成死信 (dead message) 之后,它能被重新publish到另一个Exchange,这个Ex原创 2022-03-30 20:46:11 · 210222 阅读 · 3 评论 -
【SpringBoot】59、SpringBoot使用Sa-Token-Quick-Login插件快速登录认证
一、解决的问题Sa-Token-Quick-Login 可以为一个系统快速的、零代码 注入一个登录页面试想一下,假如我们开发了一个非常简单的小系统,比如说:服务器性能监控页面, 我们将它部署在服务器上,通过访问这个页面,我们可以随时了解服务器性能信息,非常方便然而,这个页面方便我们的同时,也方便了一些不法的攻击者,由于这个页面毫无防护的暴露在公网中,任何一台安装了浏览器的电脑都可以随时访问它!为此,我们必须给这个系统加上一个登录认证,只有知晓了后台密码的人员才可以进行访问细细想来,完成这个功能你需原创 2022-03-18 12:55:59 · 208421 阅读 · 5 评论 -
【SpringBoot】58、SpringBoot使用自定义注解实现接口限流
在高并发系统中,保护系统的三种方式分别为:缓存,降级和限流。限流的目的是通过对并发访问请求进行限速或者一个时间窗口内的的请求数量进行限速来保护系统,一旦达到限制速率则可以拒绝服务、排队或等待。1、自定义限流注解import com.asurplus.common.enums.LimitType;import java.lang.annotation.*;/** * 限流注解 * * @author Lizhou */@Target(ElementType.METHOD)@Reten原创 2022-03-17 19:47:06 · 208338 阅读 · 6 评论