SpringBoot进阶
文章平均质量分 72
SpringBoot开发进阶、集成三方组件详解、SpringBoot性能优化、源码分析。
优惠券已抵扣
余额抵扣
还需支付
¥9.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
霸道流氓气质
每一个优秀的人,都有一段沉默的时光,(项目合作请留言)是那段时光,不抱怨不诉苦,最后渡过了这段感动自己的日子。
展开
-
SpringBoot中集成screw(螺丝钉)实现数据库表结构文档生成
经常会有编写数据库表结构文档的时间付出,那能否通过简单配置实现自动生成。原创 2024-07-26 08:57:16 · 466 阅读 · 0 评论 -
Spring中使用自带@Autowired注解实现策略模式
上面在讲策略模式具体在SpringBoot中应用时在规则工厂类中直接使用@Autowired注解将信号灯的规则全部注入。这里的信号灯规则接口类规则具体实现示例一这里使用注解@Autowired将所有的声明类注入到map中。这是因为Spring会自动将Strategy接口的实现类注入到这个Map中,key为bean id 即前面@Component注解指定的名称,value值则为对应的策略实现类。原创 2024-03-12 20:00:00 · 834 阅读 · 0 评论 -
SpringBoot中集成LiteFlow(轻量、快速、稳定可编排的组件式规则引擎)实现复杂业务解耦、动态编排、高可扩展
在业务开发中,经常遇到一些串行或者并行的业务流程问题,而业务之间不必存在相关性。使用策略和模板模式的结合可以解决这个问题,但是使用编码的方式会使得文件太多,在业务的部分环节可以这样操作,在项目角度就无法一眼洞穿其中的环节和逻辑。一些拥有复杂业务逻辑的系统,核心业务逻辑冗长,涉及内部逻辑运算,缓存操作,持久化操作,外部资源调取,内部其他系统RPC调用等等。时间一长,维护的成本就会越来越高。各种硬代码判断,分支条件越来越多。代码的抽象,复用率也越来越低,各个模块之间的耦合度很高。原创 2024-03-06 21:00:00 · 4105 阅读 · 0 评论 -
SpringBoot/Java中OCR实现,集成Tess4J实现图片文字识别
Tesseract是一个开源的光学字符识别(OCR)引擎,它可以将图像中的文字转换为计算机可读的文本。支持多种语言和书面语言,并且可以在命令行中执行。它是一个流行的开源OCR工具,可以在许多不同的操作系统上运行。原创 2024-02-26 21:15:00 · 2382 阅读 · 0 评论 -
SpringBoot中使用PageHelper插件实现Mybatis分页
SpringBoot中整合Mybatis时一般添加的依赖为如果要实现分页查询的话,可以使用Mybatis的分页插件PageHelperGitHub - pagehelper/Mybatis-PageHelper: Mybatis通用分页插件官方使用教程:https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md这里是SpringBoot项目,可直接使用pagehelper-spring-boot-s原创 2024-02-20 20:00:00 · 1218 阅读 · 1 评论 -
SpringBoot中使用Spring自带线程池ThreadPoolTaskExecutor与Java8CompletableFuture实现异步任务示例
关于线程池的使用:项目开发中多使用SpringBoot,Spring中有个自带的线程池ThreadPoolTaskExecutorSpring 通过任务执行器(TaskExecutor)来实现多线程和并发编程,使用ThreadPoolTaskExecutor实现一个基于线程池的TaskExecutorThreadPoolTaskExecutor是spring core包中的,而ThreadPoolExecutor是JDK中的JUC。原创 2024-02-05 21:30:00 · 2839 阅读 · 3 评论 -
SpringBoot中集成Minio高性能分布式存储文件服务入门
参考上面搭建项目。原创 2024-01-30 20:30:00 · 1426 阅读 · 0 评论 -
SpringBoot+dynamic-datasource实现多数据源(msyql、sqlserver、postgresql)手动切换
上面实现通过注解和配置文件的方式去进行多数据源操作。如果业务需求,比如查询第三方接口时提供的是sqlserver的视图连接方式时,需要在调用接口时手动新增数据源-检验数据源是否可用-切换当前数据源-查询数据-清除当前数据源实现以上流程,可以通过mybatisplus的dynamic-datasource来实现。原创 2024-01-19 21:30:00 · 3525 阅读 · 2 评论 -
SpringBoot+MybatisPlus+dynamic-datasources实现连接Postgresql和mysql多数据源
在上面的基础上实现同时连接mysql和postgresql多数据源。原创 2024-01-17 21:00:00 · 1531 阅读 · 0 评论 -
SpringBoot中整合MybatisPlus快速实现Mysql增删改查和条件构造器
Mybatis-Plus(简称MP)是一个Mybatis的增强工具,只是在Mybatis的基础上做了增强却不做改变,MyBatis-Plus支持所有Mybatis原生的特性,所以引入Mybatis-Plus不会对现有的Mybatis构架产生任何影响。MyBatis 增强工具包,简化 CRUD 操作。启动加载 XML 配置时注入单表 SQL 操作 ,为简化开发工作、提高生产率而生。原创 2024-01-17 20:30:00 · 1597 阅读 · 0 评论 -
SpringBoot中整合ElasticSearch实现增删改查等操作
在上面进行集成的基础上,实现对ES数据的增删改查等操作。原创 2024-01-15 21:00:00 · 1811 阅读 · 0 评论 -
SpringBoot中整合ElasticSearch快速入门以及踩坑记录
参考上面搭建项目。原创 2024-01-15 20:30:00 · 1667 阅读 · 0 评论 -
SpringBoot中使用SpringEvent业务解耦神器实现监听发布事件同步异步执行任务
开发过程中,业务逻辑可能非常复杂,核心业务 + N个子业务。如果都放到一块儿去做,代码可能会很长,耦合度不断攀升。还有一些业务场景不需要在一次请求中同步完成,比如邮件发送、短信发送等。MQ 可以解决这个问题,但 MQ 重,非必要不提升架构复杂度。针对这些问题,我们了解一下 Spring Event。Spring Event(Application Event)其实就是一个观察者设计模式,一个 Bean 处理完成任务后希望通知其它 Bean 或者说一个 Bean 想观察监听另一个Bean 的行为。原创 2024-01-11 21:30:00 · 811 阅读 · 0 评论 -
SpringBoot中使用SpringRetry实现重试机制(重试调用第三方API)
在调用第三方接口时,可能会出现因为网络波动等原因导致的接口连接超时等短暂的问题。如何在调用时添加重试机制,可以通过添加注解的方式给指定的方法配置指定的策略执行重试机制。原创 2024-01-11 21:00:00 · 811 阅读 · 0 评论 -
SpringBoot中使用单例模式+ScheduledExecutorService实现异步多线程任务(若依源码学习)
结合以上,学习并模仿若依登录接口中异步记录登录日志的操作。在若依登录的SysLoginService中login登录方式有异步记录登录日志的操作。原创 2024-01-10 20:30:00 · 1799 阅读 · 0 评论 -
SpringBoot+modbus4j实现ModebusTCP通讯读取数据
这是因为功能码不对应,使用Modbus Slave Definition定义的功能码为03 Holding Register(4x),而在代码中连接后执行的是读取线圈状态的功能码。标准的Modbus协议物理层接口有RS232、RS422、RS485和以太网接口,采用master/slave方式通信。Serotonin Software用Java编写的Modbus协议的高性能且易于使用的实现。ModbusPal是一个正在进行的Java项目,用于创建逼真的Modbus从站模拟器。原创 2023-12-29 21:00:00 · 4224 阅读 · 2 评论 -
SpringBoot中读取yml中配置的list对象的配置项
参考上面获取yml配置文件中简单的配置项的方式。如果需要获取application.yml中配置的list数据,且每个list有多个属性的内容,比如下面添加在application.yml中的内容可以通过如下方式实现。原创 2023-12-29 10:24:52 · 1168 阅读 · 0 评论 -
SpringBoot+JaywayJsonPath实现Json数据的DSL(按照指定节点表达式解析json获取指定数据)
在上面搭建SpringBoot项目的基础上,并且在项目中引入fastjson、hutool等所需依赖后。需要对接第三方接口,接口返回的json数据需要解析获取数据。可以通过配置每个返回字段的对应json数据的表达式,使其在代码中根据配置的表达式动态获取。原创 2023-12-22 20:00:00 · 1137 阅读 · 0 评论 -
SpringBoot中项目启动及定时任务缓存数据库常用数据至内存变量并转换后高频调用
定时任务中需要获取数据库中数据进行数据转换成需要的格式并进行后续的业务处理。数据库中的数据更新频率不高。可将数据库中数据在项目启动后读取一遍数据,然后再通过定时任务定时查询数据库更新数据。实现数据库缓存的方式有多种,比如以下:若msyql中数据量不大或不想引入redis等三方中间件。可通过如下简单方式实现。原创 2023-12-14 15:06:09 · 646 阅读 · 0 评论 -
Springboot+FastJson实现解析第三方http接口json数据为实体类(时间格式化转换、字段包含中文)
在上面搭建SpringBoot项目的基础上,并且在项目中引入fastjson、hutool、lombok等所需依赖后。系统需要对接第三方http接口获取返回的数据,并将json数据解析为实体类进行后续的业务处理。原创 2023-12-08 10:53:14 · 937 阅读 · 0 评论 -
SpringBoot项目中集成自定义公共Maven依赖如何集成与调试
多个SpringBoot项目需要使用重复的公共代码实现,可以将公共代码抽离成单独的maven项目,并再各项目中通过引用maven私服依赖的方式进行引用集成。原创 2023-12-06 15:38:49 · 603 阅读 · 0 评论 -
SpringBoot中定时任务开启多线程避免多任务堵塞
使用SpringBoot原生方式实现定时任务,已经开启多线程支持,以上是方式之一。除此之外还可通过如下方式。为什么Spring Boot 定时任务是单线程的?原创 2023-07-26 13:17:57 · 1114 阅读 · 1 评论 -
SpringBoot中使用测试框架MockMvc来模拟HTTP请求测试Controller接口
上面讲了开发过程中一些测试方法。如果需要在代码中直接测试某个Controller接口,除了每次启动项目后使用postman等测试工具测试外,还可以使用MockMvc进行测试。原创 2023-07-25 10:04:24 · 1408 阅读 · 0 评论 -
SpringBoot中接口幂等性实现方案-自定义注解+Redis+拦截器实现防止订单重复提交
以下接口幂等性的实现方式与上面博客类似,可参考。原创 2023-07-25 09:33:37 · 1887 阅读 · 0 评论 -
SpringBoot中通过自定义Jackson注解实现接口返回数据脱敏
上面讲的是数据库中存储密文,查询时使用明文的脱敏方式,如果是需要数据库中存储明文,而在查询时返回处理后的数据,比如身份证号、手机号等敏感数据,可以通过如下方式。原创 2023-07-16 13:55:15 · 1466 阅读 · 0 评论 -
SpringBoot中整合Sharding Sphere实现数据加解密/数据脱敏/数据库密文,查询明文
为防止数据泄露,需要在插入等操作时将某表的字段在数据库中加密存储,在需要查询使用时明文显示。原创 2023-07-15 17:35:24 · 3273 阅读 · 1 评论 -
SpringBoot中集成jasypt-spring-boot实现配置文件数据加密脱敏
经常会遇到这样一种情况:项目的配置文件中总有一些敏感信息,比如数据源的url、用户名、密码....这些信息一旦被暴露那么整个数据库都将会被泄漏,那么如何将这些配置隐藏呢。除了使用手动将加密之后的配置写入到配置文件中,提取的时候再手动解密的方式,还可以使用如下方式。原创 2023-07-15 13:55:45 · 1206 阅读 · 0 评论 -
SpringBoot中集成阿里开源缓存访问框架JetCache实现声明式实例和方法缓存
上面讲的通过自定义注解的方式实现查询数据库数据缓存,除此之外还有更好的轮子。原创 2023-07-11 15:50:30 · 1738 阅读 · 0 评论 -
SpringBoot中集成Flyway实现数据库sql版本管理入门以及遇到的那些坑
Git/ SVN 是代码界的版本控制工具,那么,Flyway 就是一款数据库界的版本控制工具,它可以记录数据库的变化记录。可能很多公司都是通过人工去维护、同步数据库脚本,但经常会遇到疏忽而遗漏的情况,举个简单的例子:我们在开发环境对某个表新增了一个字段,而提交测试时却忘了提交该 SQL 脚本,导致出现 bug 而测试中断,从而影响开发、测试的工作效率。有了 Flyway,我们可以按版本约定,统一管理所有的 SQL 脚本变更,原创 2023-07-10 16:54:33 · 937 阅读 · 0 评论 -
SpringBoot中使用@Scheduled实现定时任务通过读取配置文件动态开关
上面讲的通过@Scheduled注解实现简单定时任务的方式。如果定时任务有多个,不同业务场景下需要动态配置某个定时任务的开关。可以通过@ConditionalOnProperty注解来实现。@ConditionalOnProperty注解来控制@Configuration是否生效。把每个定时定位抽离出到单独一个Task类中,将Task类原来的@Component注解改为@Configuration注解。然后在配置文件中配置对应的定时任务是否执行的表达式,在注解。原创 2023-05-25 16:18:15 · 3042 阅读 · 0 评论 -
SpringBoot中使用枚举类、switch、常量类(声明并初始化map)实现类策略者模式,接口返回常量数据
在上面几篇文章的基础上,实现提供一个接口根据请求参数不同返回对应固定的常量值。比如接口请求需要提供请求码,根据请求码查询对应的策略,并返回常量类中声明和初始化的字符串常量和Map常量。原创 2023-05-24 10:45:08 · 1601 阅读 · 0 评论 -
SpringBoot中操作Redis解析JsonArray数据为对象List(ruoyi字典值sys_dict为例)
在上面搭建系统的基础上,会将系统的字典值缓存进redis中。看数据格式存储的是Json数组,如何从redis中读取并解析成对象的list从而进行数据处理。原创 2023-05-24 09:33:55 · 1180 阅读 · 0 评论 -
SpringBoot中@ControllerAdvice/@RestControlAdvice+@ExceptionHandler实现全局异常捕获与处理
在编写Controller接口时,为避免接口因为未知的异常导致返回不友好的结果和提示。如果不进行全局异常捕获则需要对每个接口进行try-catch或其他操作。可以对Controller进行全局的异常捕获和处理,一旦发生异常,则返回通用的500响应码与通用错误提示。并将异常发生的具体的文件、类、方法、行数信息记录到日志。@ControllerAdvice,是Spring3.2提供的新注解,它是一个Controller增强器,原创 2023-05-11 11:43:56 · 3922 阅读 · 2 评论 -
SpringBoot中策略模式+工厂模式业务实例(接口传参-枚举类查询策略映射关系-执行不同策略)规避大量if-else
上面讲了策略模式在Java中的使用示例。下面看一个在SpringBoot中的实际使用示例。业务场景:有多个煤矿,信号灯有多个厂家/规则,每个煤矿对应一种信号灯。需要编写通用接口,根据传递的请求码不同获取到该煤矿对应的信号灯规则,并执行对应的信号灯规则获取数据。原创 2023-05-05 11:42:46 · 2726 阅读 · 0 评论 -
SpringBoot中操作Redis通过所有可能的key查询存在的key并解析为对象实体的通用方法
在上面讲操作redis中特殊操作时,对于通过key的集合批量查询所使用的工具方法,不能实现通用对象适配,下面进行修改。应用场景是所有业务数据会存储在mysql数据库中,使用redis作为msyql数据库的缓存。但是redis中有的数据不一定全覆盖mysql中的数据。那么在redis中进行缓存时会使用mysql中某个字段作为唯一标识缓存到redis中,将唯一标识作为redis的key,那么如何通过所有可能的key的集合在redis中批量查询所有存在的key,并将value数据进行解析为对应的对象。原创 2023-04-02 15:29:56 · 2327 阅读 · 0 评论 -
SpringBoot中操作Redis的特殊操作-批量查询(通过key的集合批量查杜绝模糊搜索)、查询并解析对象list
在上面集成Redis并存取数据的基础上,下面记录两个特殊操作。1、查询所有以指定前缀开头的key的数据并解析,比如这里是以card:card开头的数据。2、查询并解析value值为对象数组的list。原创 2023-04-01 14:29:46 · 4334 阅读 · 1 评论 -
SpringBoot中集成Redis实现对redis中数据的解析和存储
上面讲的操作redis的工具类,但是对于redis的集成并没做细讲。下面参考若依框架的实现,从中抽离出集成redis的部分实现。原创 2023-03-30 11:13:03 · 1004 阅读 · 0 评论 -
SpringBoot中删除mysql和磁盘一个月之前的记录和文件(扫描所有文件、获取文件创建时间)
聊天室功能,需要定期删除msyql中一个月之前的数据以及磁盘上存储的语音等文件。磁盘下存储的文件按照年月日分目录存储,所以可以扫描指定目录下所有的文件并获取每个文件的创建时间进行比较并删除。文件的上传和按照时间目录存储直接采用如下开发框架自带方法注:博客:关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。原创 2022-10-17 09:54:55 · 1191 阅读 · 0 评论 -
SpringBoot中使用fastjson进行序列化与反序列对象时间的格式处理
SpringBoot+Websocket实现聊天室功能,前端发送json字符串到后台,后台反序列化json字符串为对象,并赋值发送时间字段。后台将时间存储进数据库,并序列化对象为json字符串群发给所有客户端。群发的客户端消息json串中时间为格式化之后的时间格式,不是时间戳格式。引入fastjson依赖在mysql数据库中设计时间字段时为datetime类型。注:博客:关注公众号霸道的程序猿获取编程相关电子书、教程推送与免费下载。原创 2022-09-27 17:33:23 · 2847 阅读 · 0 评论 -
SpringBoot中集成websocket后WebSocketServer中注入mapper为空
上面讲了在集成websocket后,调用mapper和service的方法。如果直接在WebSocketServer中通过@Autowired注入mapper,会报空下面具体细化应用示例。原因:项目启动时初始化,会初始化 websocket (非用户连接的),spring 同时会为其注入 service,该对象的 service 不是 null,被成功注入。但是,由于 spring 默认管理的是单例,所以只会注入一次 service。原创 2022-09-27 15:31:58 · 1965 阅读 · 2 评论