
Spring Boot
文章平均质量分 94
记录开发中Spring Boot常见的一些应用整合场景,以及Spring Boot开发技巧,包含部分源码,方便大家学习参考
Micro麦可乐
原名(傲泣龙腾)
深耕技术领域16载,全栈开发践行者。曾参与中国移动、招商集团等众多项目的开发,定期分享编程教程以最贴切生活、风趣幽默的讲解形式带领大家轻松学编程
展开
-
Spring Boot 整合 ShedLock 处理定时任务重复执行的问题
在分布式系统中,定时任务的执行往往需要考虑到多个实例的并发执行问题。假设一个定时任务会在多个节点上并发执行,可能导致重复执行,甚至引发数据异常或系统不一致问题。为了解决这一问题,ShedLock是一个简单而有效的解决方案,它可以确保在分布式环境中,只有一个节点在某一时刻执行指定的定时任务。ShedLock是一个轻量级的 Java 库,用于解决分布式系统中定时任务的重复执行问题。它的核心思想是在数据库中加锁,确保在分布式环境下,只有一个节点能够在指定时间执行某个任务。ShedLock可以与。原创 2025-01-21 21:12:52 · 4650 阅读 · 45 评论 -
在Spring Boot中使用SeeEmitter类实现EventStream流式编程将实时事件推送至客户端
是浏览器与服务器之间的一种通信机制,允许服务器向客户端发送事件流。与WebSocket不同,SSE是单向通信,适用于需要实时更新数据的场景,如通知、新闻推送、实时数据更新等。SSE的工作方式是:客户端发起一个HTTP请求,服务器返回一个持续开放的响应流。相信大家通过博主的简单示例,你已经学会了如何在 Spring Boot 中使用SeeEmitter实现流式编程(这一机制非常适合实时数据推送、事件驱动架构以及微服务中的异步消息处理。通过WebFlux的非阻塞能力,SeeEmitter。原创 2025-01-20 19:47:50 · 4472 阅读 · 40 评论 -
实现重试只知道Spring Retry?试试Spring Boot 整合 Fast Retry 来实现重试机制
在外面日常开发中,服务之间的调用往往存在延迟和失败的情况。比如之前博主写的一篇【Spring Boot集成 Spring Retry 实现容错重试机制并附源码】短信发送远程服务调用争抢锁网络延迟服务宕机或临时故障等问题。为了提高服务的可靠性,我们可以使用重试机制来处理这些问题,之前我们已经介绍了,今天我们介绍另外一款轻量级的Fast Retry库。Fast Retry是一个轻量级的 Java 重试库,它可以方便地为方法调用添加重试机制。原创 2024-10-24 19:59:43 · 11780 阅读 · 36 评论 -
Spring Boot 集成 PDFBox 实现PDF电子签章的简单应用
在前面的专栏中,博主写了一篇【Spring Boot集成OpenPDF和Freemarker实现PDF导出功能并附水印】有关于PDF导出的文章,有小伙伴私信问我,公司需要做电子签章的功能,是否有其它工具推荐?答案是肯定的!本篇文章我们就介绍另外一个操作PDF的工具PDFBoxPDFBox是一个强大的 Java PDF 库,支持 PDF 文档的创建、编辑和签章等操作。是一个开源的Java PDF库,用于操作PDF文档。它支持创建、编辑、渲染和签名PDF 文件,并且可以将PDF文件解析为文本或图像。原创 2024-10-23 18:00:28 · 12058 阅读 · 39 评论 -
SpringBoot中MyBatis使用自定义TypeHandler
1. 前言2. 自定义TypeHandler的应用场景3. 实现自定义 TypeHandler4. 在 MyBatis 配置中使用 TypeHandler方式一:在mybatis-config.xml中配置方式二:使用注解配置5. 在实体类中应用自定义TypeHandler6. 总结在 Spring Boot 项目中集成 MyBatis 时,我们有时需要处理数据库字段与 Java 对象属性之间的特殊转换,这时可以使用 MyBatis 提供的自定义。原创 2024-08-26 17:20:30 · 11537 阅读 · 39 评论 -
使用Spring Boot整合ip2region获取客户端IP地理位置信息
在我们日常WEB开发工作中,经常会有需要获取客户端地理位置的需求,如:发布内容显示城市名、系统统计监控用户访问城市等等,获取客户端IP的地理位置信息有助于提供个性化服务、提高用户体验,以及进行数据分析和安全防护。今天博主就给大家介绍一个高效的IP地理位置库 -ip2regionip2region- 是一个离线IP地址定位库和IP定位数据管理框架,10微秒级别的查询效率,提供了众多主流编程语言的 xdb 数据生成和查询客户端实现。ip2region。原创 2024-08-12 12:05:12 · 11707 阅读 · 44 评论 -
Spring Boot集成OpenPDF和Freemarker实现PDF导出功能并附水印
在我们日常开发中,生成 文件是一项常见的需求。无论是生成单据、报表、发票还是其他文档, 格式因其便捷的打印和跨平台支持而被广泛使用。本文将介绍如何在 项目中使用 和 来实现 HTML 模板到 PDF 的导出功能输出的单据效果:后端编码形式输出的单据效果:Flying Saucere介绍原创 2024-07-28 11:13:24 · 12342 阅读 · 51 评论 -
Spring Boot中@Async注解的使用及原理 + 常见问题及解决方案
在现代Java应用程序中,异步处理是提高性能和响应速度的重要手段之一,比如博主之前分享的【Spring Boot 使用自定义注解和自定义线程池实现异步日志记录】,就是采用了异步处理来实现日志记录,而在中它提供了@Async注解来简化异步编程,今天博主就来和小伙伴们分享本@Async注解的基本使用、实现原理以及应用场景。使用@Async注解定义异步方法原创 2024-07-12 01:11:32 · 12957 阅读 · 41 评论 -
Spring Boot 实现 AOP 动态热插拔功能并附DEMO源码
AOP(面向切面编程)是一种强大的编程范式,可以用于日志记录性能监控安全检查等跨越多个模块的通用功能。实现AOP的动态热插拔可以让我们在不重启应用的情况下启用或禁用特定的切面,提高系统的灵活性和可维护性。我们以一个例子来说明一下为什么需要AOP动态热插拔:我们系统有一个AOP切面,它负责了记录用户传递参数、执行时间、接口返回结果,默认是不开启的,现在因为某些原因需要检测某个接口参数接收情况 + 耗时 + 返回数据,那么我们就需要在不重启应用的情况下,动态开启关闭AOP切面来达到我们想要的效果。原创 2024-07-01 21:14:42 · 11445 阅读 · 42 评论 -
Spring Boot 整合开源 Tess4J库 实现OCR图片文字识别
之前在某一个项目中,客户要求根据上传的文档图片系统自动识别图片内容,这就需要到了OCR技术,我们公司一般做法通常是使用阿里云或腾讯云的OCR图片识别(大厂的训练量更多更大,识别更精准)无奈客户资金有限,又希望我们满足需求,最后我们决定采用开源Tesseract文字识别OCR引擎来实现Tesseract是一个功能强大的OCR引擎,其发展经历了多个版本的迭代。最初由惠普实验室开发,后由 Google 维护和发展。Tesseract通过神经网络和图像处理技术,对图像中的文字进行识别和提取。Tess4J是一个。原创 2024-06-03 21:54:08 · 13224 阅读 · 22 评论 -
Spring Boot 3 整合 SpringDoc OpenAPI 生成接口文档
在我们日常开发过程中,维护良好的API文档对于团队协作和开发效率至关重要。是一个强大的工具,能够帮助我们轻松生成规范的文档,并提供交互式的Swagger UI界面。本文跟着博主一起来学习如何在项目中整合,生成在线接口文档目前有两个版本1.x以及2.x, 以下是版本对应的支持:Springdoc OpenAPI 1.x:支持 JDK 8 及以上版本(Spring Boot 2.x and 1.x.)原创 2024-06-20 12:59:31 · 17531 阅读 · 37 评论 -
Spring Boot集成 Spring Retry 实现容错重试机制并附源码
短信发送远程服务调用争抢锁网络延迟服务宕机或临时故障等问题,会导致本次请求交互失败,而借助能够帮助我们在方法调用失败时自动重试,从而提高系统的稳定性和健壮性。本文跟着博主由浅入深一起来学习!Spring Retry 是一个用于简化 Java 方法重试逻辑的库,它能够在方法调用失败时自动重试,并提供了丰富的配置选项,支持重试次数、重试间隔时间、异常类型等配置。通过使用 Spring Retry,可以方便地在 Spring Boot 应用中实现容错和重试机制。原创 2024-06-13 22:27:28 · 16469 阅读 · 47 评论 -
Spring Boot整合Redis实现发布/订阅功能
Redis作为一个高性能的内存数据存储,除了支持缓存和持久化数据,它还有很多功能,如:在博主分享的上一篇文章中,我们介绍了使用Redis实现的延迟队列功能【Spring Boot整合Redis通过Zset数据类型+定时任务实现延迟队列】发布/订阅(Pub/Sub)发布/订阅是一种消息通信模式,其中发送者(发布者)发布消息,多个接收者(订阅者)订阅并接收这些消息。发布者和订阅者之间没有直接联系,消息由消息中间件(如Redis)传递。通过本文,我们详细介绍了如何在中整合Redis。原创 2024-06-10 19:24:17 · 17766 阅读 · 29 评论 -
Spring Boot整合Redis通过Zset数据类型+定时任务实现延迟队列
在我们项目开发中,我们经常需要在特定时间后执行某些任务,例如订单超时未支付自动取消、资金余额低于限额提醒、延时消息发送等。延迟队列是一种非常实用的解决方案,而Redis也具备延迟队列的功能,这里博主将和大家分享基于Redis的Zset数据类型定时任务实现延迟队列到这里相信小伙伴们已经了解了如何使用和Redis实现一个简单的延迟队列,并使用线程池来执行定时任务以提高效率。延迟队列能够有效地处理需要在特定时间点或延迟一段时间后执行的任务。原创 2024-06-09 12:00:00 · 15048 阅读 · 34 评论 -
Spring Boot通过自定义注解和Redis+Lua脚本实现接口限流
在我们日常开发的项目中为了保证系统的稳定性,很多时候我们需要对系统接口做限流处理,它可以有效防止恶意请求对系统造成过载。通过本文的步骤,我们将成功地在`Spring Boot`项目中结合`Redis`和`Lua`脚本实现了一个灵活高效的接口限流功能。通过`自定义注解`和`AOP`切面,可以方便地为不同的接口设置不同的限流策略原创 2024-06-09 10:00:00 · 12520 阅读 · 22 评论 -
Spring Boot整合WebSocket和Redis实现直播间在线人数统计功能
在现在这个短视频时代,很多企业也投入到了直播的行业,甚至为了打造自己专属私域某些企业也会开发应用自己的直播系统,而在直播应用中,实时显示在线人数是一个非常重要的功能。这里博主将详细介绍通过结合WebSocket和Redis,我们可以实现一个简单而高效的直播间在线人数统计功能,并提供完整的代码示例。创建一个WebSocket理器类继承,用于处理WebSocket消息和连接事件import org。原创 2024-06-08 00:12:28 · 14452 阅读 · 35 评论 -
Spring Boot中整合Jasypt 使用自定义注解+AOP实现敏感字段的加解密
前言开始接入步骤一:添加依赖步骤二:配置Jasypt步骤三:创建自定义注解步骤四:创建AOP切面步骤四:创建示例实体类步骤五:创建测试Controller步骤六:验证功能结语在博主前面一篇文章中,相信小伙伴对中整合Jasypt以及加解密的方法有了一定的了解,没看过的小伙伴可以访问【Spring Boot整合Jasypt 库实现配置文件和数据库字段敏感数据的加解密】一起探讨。本章节我们针对Jasypt来做一些升级的玩法,使用自定义注解AOP来实现敏感字段的加解密。原创 2024-06-06 16:09:55 · 13301 阅读 · 28 评论 -
Spring Boot整合Jasypt 库实现配置文件和数据库字段敏感数据的加解密
在我们日常开发中,很多时候为了保证数据的安全,在处理敏感数据前后端数据传输数据库敏感数据入库等,数据的加密和解密是不可忽视的重要环节,特别是一些政企项目这点就尤为重要,避免每一次安全审计后反复的调整,所以在系统设计之初我们就应当把数据安全的问题考虑进去!今天博主就给大家详细介绍的功能,并展示如何在项目中实现各种加解密操作Jasypt(Java Simplified Encryption)是一个用于加密和解密数据的Java库。它提供了简单易用的API,可以轻松地将加密功能集成到Java应用程序中。原创 2024-06-05 22:13:10 · 14077 阅读 · 24 评论 -
Spring Boot 使用自定义注解和自定义线程池实现异步日志记录
通过`自定义注解`、`Spring AOP` 和`自定义线程池`,我们可以在 `Spring Boot` 应用中实现高效的异步日志记录。这种方法不仅提高了日志记录的灵活性,还能减小对主业务线程的影响。希望本文对您在实际项目中实现日志记录有所帮助。这种方式在实际生产环境中非常实用,特别是在需要高效处理大量日志记录的场景下。通过合理配置线程池,可以确保日志记录的性能和稳定性。原创 2024-06-04 11:41:50 · 12760 阅读 · 17 评论 -
使用Spring Boot自定义注解 + AOP实现基于IP的接口限流和黑白名单
前言项目初始化自定义限流注解编写限流切面Controller中使用限流注解测试及思考结语在我们日常开发的项目中为了保证系统的稳定性,很多时候我们需要对系统做限流处理,它可以有效防止恶意请求对系统造成过载。网关限流NGINXZuul等 API 网关服务器端限流:服务端接口限流令牌桶算法:通过定期生成令牌放入桶中,请求需要消耗令牌才能通过熔断机制Hystrix等本文将详细介绍通过自定义注解和AOP(面向切面编程),实现基于IP的限流和黑白名单功能,包括如何使用Redis存储限流和黑名单信息。原创 2024-05-31 20:15:47 · 13217 阅读 · 18 评论 -
Spring Boot 整合 spring-boot-starter-mail 实现邮件发送和账户激活
在我们日常开发中,用户注册后需要对用户进行一个激活,通过邮件激活账户是一种常见的用户验证机制。这里博主将详细介绍如何使用实现邮件发送和账户激活功能,并构建一个简单的Spring Boot项目实现代码示例和关键技术点。Spring Boot的starter模块提供了自动化配置,所以在引入了依赖之后,会根据配置文件中的内容去创建实例,我们只需要在使用的地方直接@Autowired来引入原创 2024-05-30 10:31:44 · 16314 阅读 · 18 评论 -
SpringBoot启动时执行初始化操作还只会用@PostConstruct?进来看看其它方式~
相信很多小伙伴在日常工作中一定遇到了,项目启动的时候需要一些初始化操作,比如:数据库的初始化、资源初始化、缓存预热、定时任务等等操作,那么就一定看完本篇文章,告诉你你SpringBoot启动时执行初始化操作的4种方式本章节主要介绍了SpringBoot启动时执行初始化操作的4种方式,当然这些方式可以单独使用,也可以组合使用,具体选择取决于你的需求和项目的结构。原创 2024-01-04 20:34:35 · 12163 阅读 · 10 评论 -
了解SpringBoot自动配置原理开发自己的Starter
了解SpringBoot自动配置原理开发自己的Starter前言从启动到装配@EnableAutoConfiguration 注解验证分析实践大于理论SpringBoot starter机制自定义starter好处构建DEMO Starter测试结语前言公司使用SpringBoot开发已经有些时日了,也写了不少公司内部的starter(公司业务处理核心模块),今天就和大家聊聊SpringBo...原创 2020-04-14 20:48:31 · 12254 阅读 · 16 评论 -
SpringBoot静态方法调用Spring容器bean的几种方案
问题分析今天一个小伙伴和我说@Autowired 注入的Bean为null值,经过一番沟通后,我发现原来他需要在静态方法中调用容器Bean,大致将代码贴出来给大家看看://模拟错误的使用方式@Autowiredprivate static RedisUtil redisUtilBean;public static String getMsgByRedis(){redisUtilBea...原创 2019-07-01 17:36:02 · 19883 阅读 · 8 评论 -
Spring容器初始化后执行的几种解决方案
项目问题在我们日常Spring开发中,经常会在项目启动的时候做一些列的初始化操作;我们例举几个:项目启动,同时初始化我们系统的一些基础配置(SQL的导入)项目启动,同时启动定时任务按照以上的需求,我们如何来解决?那么我们就需要对Spring容器的初始化需要有一定的了解,今天我们就来讲一讲;解决方案Spring提供了当一个Bean初始化后执行方法的扩展点:InitializingBe...原创 2019-04-28 10:10:27 · 3683 阅读 · 0 评论 -
Spring Boot + thymeleaf 整合UEditor百度编辑器的各种问题解决
前言很多小伙伴以前使用Spring + SpringMVC 做的项目加入UEditor ,下载官网JSP版本可以快速实现UEditor 的使用;但是自项目转成Spring Boot 开发后,却发现原来的UEditor 使用不了了,今天我们就把坑一个一个引出,然后一个一个填上;下载/配置首先我们去 官方下载UEditor JSP版本 ,解压后放到项目resources/static目录;因...原创 2019-03-07 18:52:17 · 4542 阅读 · 4 评论 -
Error creating bean with name 'serverEndpointExporter' 因为websocket导致spring boot项目单元测试启动失败解决
项目问题:博主在项目中引入了websocket功能主要作用于消息的推送,但是在进行其它方法Junit测试的时候发现出现如下错误org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'serverEndpointExporter' defined in class pa...原创 2019-02-28 23:43:45 · 6115 阅读 · 5 评论