- 博客(151)
- 资源 (42)
- 收藏
- 关注
原创 SpringBoot集成MyBatis的SQL拦截器实战
/ 作用在字段上// 运行时生效// 脱敏类型(手机号、身份证号等)// 脱敏类型枚举PHONE, // 手机号ID_CARD // 身份证号通过SQL拦截器,我们用极少的代码实现了SQL监控和数据脱敏,避免了修改大量业务代码。
2025-07-17 07:39:43
282
原创 SpringBoot自定义RestTemplate的拦截器链
通过自定义RestTemplate的拦截器链,我们可以将请求处理的通用逻辑(认证、日志、重试等)抽离成独立组件,实现代码复用和统一维护。
2025-07-15 07:52:53
169
原创 基于 SpringBoot 的 REST API 与 RPC 调用的统一封装
通过外观模式 + 适配器模式 + 策略模式的组合,实现了 REST API 与 RPC 调用的统一封装。
2025-07-13 12:02:57
513
原创 SpringBoot应用开机自启动与进程守护配置
简单说,systemd是现在Linux系统的"大管家",负责管理系统启动和服务进程。几乎所有主流Linux(CentOS 、Ubuntu 、Debian等)都支持使用systemd。为什么推荐它?原生集成:不需要额外安装软件功能强大:支持开机自启、进程监控、日志管理配置简单:一个服务文件搞定所有设置按照这些步骤配置后,你的SpringBoot应用将具备服务器重启或应用异常down掉后自动恢复的能力。
2025-07-11 07:39:58
272
原创 SpringBoot 与 HTMX:现代 Web 开发的高效组合
后端:Spring Boot REST API前端:纯 HTML + HTMX + doT.js + Tailwind CSS这种架构使得前后端可以独立开发、测试和部署,同时保持高效的通信和良好的用户体验。通过结合 Spring Boot 和 HTMX,我们实现了一个高效、简洁的前后端分离应用。这种架构既保留了 Spring Boot 强大的后端处理能力,又通过 HTMX 简化了前端开发,避免了复杂的前端框架和构建流程。对于中小型项目或者需要快速迭代的应用来说,这种组合是一个非常不错的选择。
2025-07-09 07:49:02
409
原创 SpringBoot敏感配置项加密与解密实战
如果Jasypt满足不了你的需求(比如要对接企业内部的密钥管理系统),可以自己实现加密解密逻辑。比如,某些时候项目需要用国密算法SM4,Jasypt不支持,就需要自定义个解密处理器。/*** 自定义加密配置源* 解密以"sm4:"开头的配置项*/> source;@Override// 解密以"sm4:"开头的配置密钥管理:密钥必须与配置文件分离,优先用环境变量或专用密钥管理服务(如阿里云KMS)算法选择。
2025-07-08 09:09:17
579
原创 SpringBoot 控制器的动态注册与卸载
在项目开发中,动态注册和卸载控制器可以根据业务场景和项目需要实现功能的动态增加、删除,提高系统的灵活性和可扩展性,本文将介绍如何在 Spring Boot 中实现控制器的动态注册和卸载。
2025-07-06 11:28:43
254
原创 SpringBoot基于Java Agent的无侵入式监控实现
Java Agent是JDK 1.5引入的特性,它允许我们在JVM启动时或运行时动态地修改已加载的类字节码,从而实现对应用行为的增强或监控。Java Agent的核心优势在于能够在不修改源代码的情况下,对应用进行功能扩展。启动时加载(premain)运行时加载(agentmain)本文将主要关注启动时加载的方式。在实际使用中,我们可以根据具体需求,对Agent进行定制化开发,实现更加精细化的监控。同时,可以将Agent与现有的监控系统集成,构建完整的应用性能监控体系。
2025-07-04 08:06:07
946
原创 Spring Shell命令行工具开发实战
Spring Shell是一个交互式shell框架,它提供了一种通过命令行与应用程序交互的方式。它支持自动补全、帮助文档生成、命令历史和各种交互式功能,使命令行工具更加用户友好。类似于Bash的交互体验Tab键自动补全功能内置帮助系统命令历史记录参数验证和转换命令分组和可扩展性在Spring Shell中,命令是通过在标有注解的类中创建标有注解的方法来定义的。您可以通过实现@Bean。
2025-07-03 07:44:45
393
原创 利用SpringBoot中的RestTemplate实现反向代理
反向代理是指以代理服务器接收客户端请求,然后将请求转发给内部服务器,并将内部服务器的响应返回给客户端。客户端只与反向代理服务器通信,不直接访问内部服务器。通过SpringBoot和RestTemplate,我们可以快速实现一个功能完备的反向代理。相比于专门的代理服务器如Nginx,这种方式更加灵活,可以与业务逻辑紧密结合,适合实现特定的代理需求。但对于大规模的代理场景,还是推荐使用专门的代理软件。
2025-07-02 08:16:14
261
原创 Spring Boot Filter、Interceptor、AOP 的使用场景与选型
选择合适的技术取决于具体需求、性能考虑和团队熟悉度。在实际应用中,合理组合使用这三种技术可以构建更加模块化、可维护的应用程序。对于 Spring Boot 应用程序,推荐遵循"责任分离"原则,根据横切关注点的性质选择最合适的实现方式,让代码结构更加清晰,逻辑更加分明。
2025-07-01 08:29:13
564
原创 Spring Boot 内置反向代理(Undertow Proxy)高可用配置
Undertow 是一个采用 Java 开发的灵活的高性能 Web 服务器,提供基于 NIO 的阻塞和非阻塞 API。轻量级:核心仅依赖于 JBoss Logging 和 xnio高性能:在多核系统上表现优异内置反向代理:支持 HTTP、HTTPS、HTTP/2 代理可扩展:通过 Handler 链模式支持灵活扩展Spring Boot 内置的 Undertow 反向代理功能为微服务架构提供了一种轻量级的代理解决方案。
2025-06-30 08:00:17
260
原创 SpringBoot 运行时修改定时任务 Cron 表达式
Scheduled 注解:最简单的方式,直接在方法上添加注解SchedulingConfigurer 接口:通过实现该接口,可以进行更灵活的配置TaskScheduler 接口:最底层的 API,提供最大的灵活性传统的@Scheduled@Component") // 每5分钟执行一次System.out.println("定时任务执行,时间:" + new Date());
2025-06-29 08:56:29
511
原创 SpringBoot多版本API共存--通过注解路由新旧版本接口实现灰度发布
*** API版本注解,用于标记接口的版本*//*** 版本号,默认为1.0*//*** 版本描述*//*** 是否废弃*//*** 废弃说明,建议使用的新版本等信息*//*** 灰度发布注解,用于定义灰度发布规则*//*** 开始时间,格式:yyyy-MM-dd HH:mm:ss*//*** 结束时间,格式:yyyy-MM-dd HH:mm:ss*//*** 用户ID白名单,多个ID用逗号分隔*//**
2025-06-28 07:50:08
717
原创 SpringBoot实现本地远程方法调用的无缝切换
首先,我们需要定义服务接口。这些接口将同时作为本地实现和远程调用的契约。// 用户服务接口在实际应用中,可以根据自身业务特点和技术栈,对本文提出的方案进行适当的调整和扩展,以满足特定场景的需求。
2025-06-27 08:02:33
627
原创 SpringBoot+WebSocket实现直播连麦
随着互联网技术的发展,直播已成为一种主流的内容传播形式。其中,连麦功能作为直播互动的重要手段,能够有效提升用户参与感和观看体验。本文将介绍如何使用SpringBoot和WebSocket技术构建一个直播连麦系统,实现主播与观众之间的实时音视频交流和文字聊天功能。为了方便DEMO的运行,本系统基于纯内存操作实现核心业务逻辑,不依赖外部数据库或者缓存组件。
2025-06-26 07:46:07
506
原创 SpringBoot内存泄漏的11个排查方法
内存泄漏问题是Java应用尤其是长期运行的SpringBoot应用面临的常见挑战。在实际应用中,通常需要结合多种方法进行综合分析,才能准确找出问题根源。同时,完善的监控体系也能帮助我们及早发现并解决潜在问题,确保应用的长期稳定运行。
2025-06-25 07:43:49
1069
原创 历史项目依赖库Bugfix技巧-类覆盖
首先,优先推荐前两种方式进行问题修复,但是某些时候受制于时间、成本、风险等因素需要快速解决问题,这时,可以考虑第三种方案类覆盖。需要特别注意的是,修改的方法可能会被多处调用,修改时需要充分考虑兼容性。
2025-06-23 20:01:56
308
原创 SpringBoot实现面对面建群(基于Redis)
面对面建群是一种基于位置的社交应用场景,允许用户在物理位置相近的情况下快速创建和加入临时群组。本文将介绍如何使用SpringBoot和Redis实现面对面建群,本示例基于Redis的各种数据结构存储应用数据。
2025-06-22 10:09:35
1284
2
原创 SpringBoot的4种数据水平分片策略
数据水平分片作为一种水平扩展策略,通过将数据分散到多个物理节点上,有效解决了存储容量和性能瓶颈问题。而分片键(Sharding Key)作为数据分片的核心,决定了数据如何在各个分片中分布,直接影响到分片系统的性能、数据分布均衡性以及查询效率。本文将分享4种数据分片策略。在实际应用中,应根据业务特点、查询模式、性能需求和扩展预期来选择最合适的分片策略。无论选择哪种分片策略,都应保持分片逻辑的简洁性和可维护性,并在系统设计初期就考虑未来的扩展需求。
2025-06-21 07:33:13
645
原创 SpringBoot的3种六边形架构应用方式
六边形架构的核心价值在于将业务逻辑与技术细节分离,提高系统的可维护性、可测试性和灵活性。无论选择哪种实现方式,都应该坚持这一核心原则,保持领域模型的纯粹性和边界的清晰性。需要特别说明的是,架构应该服务于业务,而非相反。选择合适的架构方式,应以提高开发效率、系统质量和业务适应性为目标。
2025-06-20 07:28:22
558
原创 SpringBoot的6种数据库垂直分片实现策略
垂直分片是数据库分库分表的一种方式,它按照业务功能或数据表将原本在同一个数据库的数据拆分到不同的数据库实例中。与水平分片(将同一张表的数据按照某种规则分散到不同库或表中)不同,垂直分片主要解决的是业务模块的解耦和单库的资源瓶颈问题。
2025-06-19 07:49:04
845
原创 Spring Boot 的 3 种二级缓存落地方式
一级缓存(本地缓存):直接在应用服务器内存中,访问速度极快,但容量有限且在分布式环境下无法共享二级缓存(分布式缓存):独立的缓存服务,如Redis或Memcached,可被多个应用实例共享,容量更大二级缓存的工作流程通常是:先查询本地缓存,若未命中则查询分布式缓存,仍未命中才访问数据库,并将结果回填到各级缓存中。该方案通过自定义缓存框架,精确控制缓存的读写流程、失效策略和同步机制,实现更加贴合业务需求的二级缓存。这种方式虽然实现复杂度高,但提供了最大的灵活性和控制力。
2025-06-18 07:26:59
674
原创 Spring Boot 的 3 种动态 Bean 注入技巧
/ 自定义条件判断逻辑@Override// 获取注解属性// 获取当前环境// 检查是否匹配// 自定义条件注解@Bean@Bean通过合理选择和组合这些技巧,我们可以构建更加灵活、模块化和可扩展的 Spring Boot 应用。关键是根据实际需求选择合适的技术,保持代码的简洁和可维护性。
2025-06-17 07:40:55
844
原创 SpringBoot实现6种JWT令牌失效方案
每种方案都有其优缺点和适用场景,选择合适的方案取决于应用的安全需求、性能要求和架构设计。在实际应用中,常常需要组合使用多种策略,构建多层次的安全防护。
2025-06-16 07:35:28
940
原创 SpringBoot的4种Bean注入冲突解决方案
Bean注入冲突指的是当Spring容器中存在多个相同类型的Bean实例时,在进行依赖注入时,Spring不知道应该注入哪一个实例的情况。多个类实现了同一个接口配置了多个相同类型的Bean引入的第三方库中含有相同类型的Bean定义@Qualifier@Qualifier@Service@Alipay// 实现略@Service@Wechat// 实现略@Service@Autowired@Wechat// 方法略@Override// 获取注解属性。
2025-06-15 09:03:35
644
原创 SpringBoot防重放攻击的5种实现方案
重放攻击是一种网络攻击手段,攻击者截获一个有效的数据传输,然后在稍后的时间重新发送相同的数据,以实现欺骗系统的目的。重复提交订单付款请求重复使用过期的访问令牌重复提交表单数据重新发送包含认证信息的请求在实际应用中,往往需要组合使用多种防重放策略,实施分层防护,并与业务逻辑紧密结合,才能构建出既安全又易用的系统。防重放攻击只是Web安全的一个方面,还应关注其他安全威胁,如XSS、CSRF、SQL注入等,综合提升系统的安全性。
2025-06-14 07:27:27
828
原创 Spring Boot Fat Jar 的三种打包方式
对于更复杂的打包需求,可以创建自定义的Assembly描述符文件:创建<formats></formats><fileSets>-- 应用jar文件 --><fileSet><includes></fileSet>-- 配置文件 --><fileSet><includes></fileSet>-- 启动脚本 --><fileSet><includes></fileSet>-- 所有依赖 --><excludes><plugin><goals></goals>
2025-06-13 07:26:27
983
原创 SpringBoot的5种请求映射优化方式
Spring MVC使用组件将HTTP请求映射到处理器(通常是控制器方法)。通过自定义HandlerMapping,可以实现更灵活的请求路由策略,满足特定业务需求。
2025-06-12 10:17:32
775
原创 SpringBoot的4种抽奖活动实现策略
在实际项目中,我们需要根据业务需求、用户规模、性能要求等因素,选择合适的抽奖策略或组合多种策略,以构建高效、可靠、安全的抽奖系统。无论选择哪种抽奖策略,都需要关注系统的公平性、性能、可靠性和安全性,不断优化和改进。
2025-06-11 07:12:08
700
原创 SpringBoot的5种签到打卡实现方案
在实际应用中,可以根据具体需求、用户规模、安全要求和预算等因素选择最合适的方案,也可以将多种方案结合使用,构建更加完善的签到打卡系统。
2025-06-10 07:16:58
1007
原创 SpringBoot的4种死信队列处理方式
Override// 记录重试失败信息try {// 存储失败消息到数据库// 添加失败信息到消息头// 发送到失败队列// 发送告警// 构造函数、getter方法等headers,new Date()死信队列是消息中间件系统中的重要安全网,通过合理的处理策略,可以提高系统的可靠性和健壮性。在实际应用中,可能需要结合多种方式,构建一个全面的死信处理框架。
2025-06-09 07:41:57
790
原创 SpringBoot离线应用的5种实现方式
嵌入式数据库直接集成在应用程序中,无需外部数据库服务器,非常适合离线应用场景。在SpringBoot中,可以轻松集成H2、SQLite、HSQLDB等嵌入式数据库。本方案利用Java内存缓存框架(如Caffeine、Ehcache)结合本地持久化存储,实现数据的本地缓存和离线访问。该方案特别适合读多写少的应用场景。离线优先架构(Offline-First)是一种设计理念,它将离线状态视为应用的默认状态,而不是异常状态。在这种架构中,数据首先存储在本地,然后在条件允许时同步到服务器。
2025-06-07 08:45:34
881
原创 SpringBoot实现简易直播
采集端:负责采集、编码音视频数据流媒体服务器:处理音视频流的转发、转码和分发CDN:提供内容分发服务,解决大规模用户访问问题播放器:解码并播放音视频内容信令服务:管理直播间信息、用户状态等。
2025-06-06 07:22:21
949
原创 SpringBoot实现实时弹幕
弹幕系统允许用户发送的评论直接显示在视频画面上,这些评论会从右向左横向滚动。@Data// 弹幕内容// 弹幕颜色// 字体大小// 视频时间点// 关联的视频ID// 发送用户ID// 用户名// 创建时间@Mapper/*** 根据视频ID查询所有弹幕,按时间排序*//*** 根据视频ID和时间范围查询弹幕*/
2025-06-05 07:25:12
778
原创 SpringBoot模块化开发的5种组织方式
Bean@Bean@Bean@Bean# 在应用配置文件中@Service@AutowiredSpringBoot模块化开发提供了多种组织方式,每种方式都有其适用场景和优缺点。选择合适的模块化策略应考虑项目规模、团队结构、业务复杂度和未来演进方向。最重要的是,模块化应该是渐进式的过程,随着项目的发展不断调整和优化模块结构,以适应不断变化的业务需求和技术环境。
2025-06-04 07:36:26
1014
原创 SpringBoot慢查询的6种监控方案
几乎所有主流关系型数据库都提供了内置的慢查询日志功能,通过设置阈值,将执行时间超过阈值的SQL记录到专门的日志文件中。利用Spring AOP机制,在Repository方法执行前后添加切面,计算执行时间并记录超过阈值的方法调用。利用Spring Boot Actuator和Micrometer提供的指标收集功能,监控数据库操作性能,并将数据导出到监控系统。P6Spy是一个开源的JDBC代理框架,能够拦截JDBC操作并记录SQL语句的执行情况,包括执行时间、参数等信息。
2025-06-03 07:30:57
897
原创 SpringBoot扫码登录实现
在移动互联网时代,扫码登录已成为Web应用不可或缺的登录方式。本文基于SpringBoot框架实现了一个完整的扫码登录系统DEMO。
2025-06-02 07:55:30
835
原创 SpringBoot数据转换的4种对象映射方案
/ 默认值处理// 自定义方法处理复杂转换// 格式化电话号码逻辑对象映射是Spring Boot应用中的常见需求,选择合适的映射方案能显著提高开发效率和应用性能。根据项目规模、性能要求和团队熟悉度选择合适的方案,同时注意映射过程中的深浅拷贝、循环引用等问题。合理使用对象映射工具,可以大幅减少样板代码,提高代码质量和可维护性。
2025-06-01 08:42:19
680
常用JavaScript特效
2011-04-03
满汉楼餐饮管理系统JAVA项目源码
2011-04-27
mysql oracle sqlserver数据库jar包大全
2011-04-03
SQL语句大全 常用操作
2011-05-20
jsf jar包及学习文档
2011-05-27
object-c初学者中文详细教程
2011-05-06
java 多媒体播放器
2011-07-29
淘宝API文档手册淘宝API文档手册
2011-06-03
超级震撼的javascript网页效果
2011-09-30
Javascript高级教程
2011-08-19
js实现的俄罗斯方块
2011-09-30
java json包java json包java json包
2011-06-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人