
Spring
文章平均质量分 81
千层冷面
进化!进化!进化!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
MyBatis-Plus 中 nested() 与 and() 方法详解
MyBatis-Plus查询构建器中的nested()与and()方法对比: and()用于简单AND条件连接,不生成括号,适用于平铺条件组合。nested()会自动生成括号,支持复杂嵌套逻辑,特别适合处理OR条件和需要明确优先级的场景。 核心区别: nested()自动加括号,and()不会 nested()支持无限层级嵌套 OR条件必须用nested() 复杂查询优先使用nested() 最佳实践: 简单AND条件用and() OR/复杂逻辑用nested() 超过3层嵌套需考虑重构 索引列前置优化性能原创 2025-06-25 13:41:15 · 818 阅读 · 0 评论 -
行为验证码 AJ-Captcha 使用文档
AJ-Captcha验证码系统集成指南:需添加captcha-spring-boot-starter和Redis依赖,配置Redis连接。核心实现包括Redis缓存服务类CaptchaCacheRedisImpl(含设置、查询、删除验证码等方法)、SPI配置文件及Spring Boot配置类(配置验证码属性和Redis模板)。系统支持验证码生成、校验、防刷等安全功能,适用于Web应用安全验证场景。原创 2025-06-24 20:28:26 · 1220 阅读 · 1 评论 -
App扫码登录网页版接口设计与实现
本文介绍了App扫码登录网页版的完整实现方案。系统采用二维码token作为媒介,通过Redis缓存管理登录状态,包含"未扫描"、"已扫描"、"已确认"三个阶段。主要实现流程包括:网页端生成二维码并轮询状态,App扫码验证身份后确认登录,最后完成凭证交换。技术栈使用Spring Boot+Redis+JWT,关键接口包含二维码生成、状态轮询、登录确认等。Redis存储会话状态和用户信息,有效期为5分钟,确保安全性和时效性。系统设计简洁高效,适用于移动原创 2025-06-20 17:50:25 · 400 阅读 · 0 评论 -
Spring + MyBatis/MyBatis-Plus 分页方案(limit分页和游标分页)详解
本文详细介绍了Spring Boot与MyBatis/MyBatis-Plus的分页实现方案。主要内容包括: 传统LIMIT/OFFSET分页的三种实现方式 原生SQL手动分页 PageHelper插件方案(推荐) MyBatis-Plus分页插件(推荐) 每种方案都给出了完整的代码示例 游标分页实现 基于ID或时间戳的逐页查询方案 包含请求参数、响应参数、Mapper和Service层的实现代码 版本支持说明 明确标注支持Spring Boot 3.1.x和MyBatis相关组件的版本 文章提供了可立即在原创 2025-05-26 17:06:57 · 1823 阅读 · 0 评论 -
Spring WebFlux 与 WebClient 使用指南
WebClient 是 Spring WebFlux 模块提供的非阻塞、响应式 HTTP 客户端,基于 Project Reactor 实现,适用于高并发场景原创 2025-05-13 19:29:13 · 1743 阅读 · 0 评论 -
盘点Spring项目中发送Http请求的工具
在Spring框架中,发送HTTP请求并解析结果的常用工具和方法包括RestTemplate、WebClient、Feign Client、Apache HttpClient/OkHttp和RestAssured。RestTemplate适用于传统同步请求,但未来可能被弃用;WebClient是异步非阻塞的响应式客户端,适合高并发场景;Feign Client通过声明式接口简化微服务间通信;Apache HttpClient和OkHttp提供高度定制化的HTTP请求控制;RestAssured则专用于API原创 2025-05-12 20:57:47 · 313 阅读 · 0 评论 -
EasyExcel导出导入excel工具类
接上一篇EasyExcel导出导入excel的文章,附上一份完整的工具类代码。原创 2025-03-31 18:14:06 · 391 阅读 · 0 评论 -
Spring项目中使用EasyExcel实现Excel 多 Sheet 导入导出功能(完整版)
通过本方案可实现:动态导出:无需模板,根据 DTO 类自动生成表头。高效导入:逐行解析,内存占用低。类型安全:通过泛型和注解保证数据一致性。灵活扩展:支持自定义样式、转换器、校验逻辑。原创 2025-03-28 17:09:47 · 914 阅读 · 0 评论 -
业务幂等性的常见解决方案详解
在分布式系统和高并发场景中,业务幂等性是确保系统可靠性和数据一致性的关键。原创 2025-03-26 17:56:45 · 1162 阅读 · 0 评论 -
@Async 注解不生效的常见原因及解决方案
Async不生效的常见原因包括未启用异步支持方法调用方式错误线程池未配置和异常未处理。添加。确保通过代理对象调用异步方法。配置自定义线程池。处理异步方法异常。验证方法作用域和 Bean 管理状态。正确配置后,异步方法将按预期在独立线程中执行,显著提升系统并发性能。原创 2025-03-14 17:38:54 · 1302 阅读 · 0 评论 -
Java 动态代理详解:利用动态代理手写一个简单的OpenFeign
动态代理通过运行时生成代理类,实现代码增强和解耦,是 Java 高级编程和框架设计的核心技术。它在 AOP、RPC、ORM 等场景中广泛应用,如 Spring、MyBatis、Feign 等框架均依赖动态代理实现核心功能。使用时需注意接口限制、性能影响及代理对象的特殊性,合理选择代理方式(JDK Proxy 或 CGLIB)以适配业务需求。原创 2025-03-06 20:17:55 · 1004 阅读 · 0 评论 -
MyBatis @Param 注解详解:指定的参数找不到?
Param的核心作用是明确参数名称,避免因参数名丢失或歧义导致的错误。报错的根本原因通常是名称不匹配或参数绑定机制不清晰。根据参数类型和数量,合理选择是否使用@Param,并在 XML 中严格匹配名称即可解决问题。原创 2025-03-05 13:48:57 · 1242 阅读 · 0 评论 -
拦截器(Interceptor)的使用
首先,你需要创建一个实现了 HandlerInterceptor 接口的类。这个接口定义了三个方法:preHandle、postHandle 和 afterCompletion,分别用于在请求处理之前、请求处理之后但在视图渲染之前、以及整个请求处理完成之后执行逻辑。// 在请求处理之前执行的逻辑 System . out . println("Pre Handle");// 返回true表示继续流程(即调用下一个拦截器或处理器);原创 2024-12-31 15:19:58 · 529 阅读 · 0 评论 -
mapper.xml文件中resultMap和resultType的深入解析
如果你的映射关系很简单,且字段名与属性名能够匹配,使用resultType会更加方便。如果映射关系复杂,比如需要进行联合查询,或者字段名与属性名不匹配,使用resultMap可以提供更灵活的映射方式。在实际应用中,选择哪一种取决于具体的需求和场景。通常推荐在能够满足需求的情况下尽可能使用简单的resultType,以保持配置的简洁性。当resultType无法满足需求时,再使用resultMap进行复杂的映射配置。原创 2025-01-08 16:08:23 · 619 阅读 · 0 评论 -
Spring Boot 启动与 Service 注入的 JVM 运行细节
通过此示例,可以清晰看到 JVM 类加载、Spring Bean 生命周期和业务方法调用之间的关系,帮助理解 Java 应用底层运行机制。我们通过一个具体的 Spring Boot 项目示例,结合 JVM 的类加载和对象实例化机制,详细说明。原创 2025-02-28 18:21:25 · 1117 阅读 · 0 评论