
Spring
文章平均质量分 78
千层冷面
进化!进化!进化!
展开
-
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 · 1327 阅读 · 0 评论 -
Spring WebFlux 与 WebClient 使用指南
WebClient 是 Spring WebFlux 模块提供的非阻塞、响应式 HTTP 客户端,基于 Project Reactor 实现,适用于高并发场景原创 2025-05-13 19:29:13 · 1179 阅读 · 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 · 236 阅读 · 0 评论 -
EasyExcel导出导入excel工具类
接上一篇EasyExcel导出导入excel的文章,附上一份完整的工具类代码。原创 2025-03-31 18:14:06 · 323 阅读 · 0 评论 -
Spring项目中使用EasyExcel实现Excel 多 Sheet 导入导出功能(完整版)
通过本方案可实现:动态导出:无需模板,根据 DTO 类自动生成表头。高效导入:逐行解析,内存占用低。类型安全:通过泛型和注解保证数据一致性。灵活扩展:支持自定义样式、转换器、校验逻辑。原创 2025-03-28 17:09:47 · 763 阅读 · 0 评论 -
业务幂等性的常见解决方案详解
在分布式系统和高并发场景中,业务幂等性是确保系统可靠性和数据一致性的关键。原创 2025-03-26 17:56:45 · 1101 阅读 · 0 评论 -
@Async 注解不生效的常见原因及解决方案
Async不生效的常见原因包括未启用异步支持方法调用方式错误线程池未配置和异常未处理。添加。确保通过代理对象调用异步方法。配置自定义线程池。处理异步方法异常。验证方法作用域和 Bean 管理状态。正确配置后,异步方法将按预期在独立线程中执行,显著提升系统并发性能。原创 2025-03-14 17:38:54 · 1018 阅读 · 0 评论 -
Java 动态代理详解:利用动态代理手写一个简单的OpenFeign
动态代理通过运行时生成代理类,实现代码增强和解耦,是 Java 高级编程和框架设计的核心技术。它在 AOP、RPC、ORM 等场景中广泛应用,如 Spring、MyBatis、Feign 等框架均依赖动态代理实现核心功能。使用时需注意接口限制、性能影响及代理对象的特殊性,合理选择代理方式(JDK Proxy 或 CGLIB)以适配业务需求。原创 2025-03-06 20:17:55 · 949 阅读 · 0 评论 -
MyBatis @Param 注解详解:指定的参数找不到?
Param的核心作用是明确参数名称,避免因参数名丢失或歧义导致的错误。报错的根本原因通常是名称不匹配或参数绑定机制不清晰。根据参数类型和数量,合理选择是否使用@Param,并在 XML 中严格匹配名称即可解决问题。原创 2025-03-05 13:48:57 · 1135 阅读 · 0 评论 -
拦截器(Interceptor)的使用
首先,你需要创建一个实现了 HandlerInterceptor 接口的类。这个接口定义了三个方法:preHandle、postHandle 和 afterCompletion,分别用于在请求处理之前、请求处理之后但在视图渲染之前、以及整个请求处理完成之后执行逻辑。// 在请求处理之前执行的逻辑 System . out . println("Pre Handle");// 返回true表示继续流程(即调用下一个拦截器或处理器);原创 2024-12-31 15:19:58 · 502 阅读 · 0 评论 -
mapper.xml文件中resultMap和resultType的深入解析
如果你的映射关系很简单,且字段名与属性名能够匹配,使用resultType会更加方便。如果映射关系复杂,比如需要进行联合查询,或者字段名与属性名不匹配,使用resultMap可以提供更灵活的映射方式。在实际应用中,选择哪一种取决于具体的需求和场景。通常推荐在能够满足需求的情况下尽可能使用简单的resultType,以保持配置的简洁性。当resultType无法满足需求时,再使用resultMap进行复杂的映射配置。原创 2025-01-08 16:08:23 · 534 阅读 · 0 评论 -
Spring Boot 启动与 Service 注入的 JVM 运行细节
通过此示例,可以清晰看到 JVM 类加载、Spring Bean 生命周期和业务方法调用之间的关系,帮助理解 Java 应用底层运行机制。我们通过一个具体的 Spring Boot 项目示例,结合 JVM 的类加载和对象实例化机制,详细说明。原创 2025-02-28 18:21:25 · 1071 阅读 · 0 评论