随笔分类 -  Spring

摘要:一、前言 在日常开发中,我们经常会遇到这样的场景:多个业务流程包含相同的核心步骤,仅在部分细节逻辑上存在差异。例如:数据导入功能(Excel导入、CSV导入)、支付流程(微信支付、支付宝支付)、接口调用流程(参数校验、业务处理、结果封装)等。 如果每个业务流程都单独实现完整逻辑,会导致大量重复代码, 阅读全文
posted @ 2026-01-06 20:42 夏尔_717 阅读(25) 评论(0) 推荐(0)
摘要:一、前言 在日常开发中,经常会遇到需要对某个请求进行多步处理的场景。例如用户注册流程,需要依次完成参数校验、手机号合法性验证、用户信息查重、密码加密、数据入库等操作;再比如接口请求的拦截处理,需要经过token验证、权限校验、限流控制、日志记录等步骤。 如果采用传统的写法,可能会出现如下的代码: p 阅读全文
posted @ 2026-01-06 20:42 夏尔_717 阅读(20) 评论(0) 推荐(0)
摘要:一、前言 在SpringBoot的业务开发中,我们偶尔会遇到这样的场景:系统中存在一组结构稳定的对象集合,但是需要对这组对象执行的操作却经常变化。比如电商系统中的订单模块,订单里包含了商品、优惠券、运费、税费等不同类型的明细对象,业务上可能需要对订单明细做金额汇总、数据导出、风控校验、发票开具等多种 阅读全文
posted @ 2026-01-06 20:42 夏尔_717 阅读(6) 评论(0) 推荐(0)
摘要:一、前言 在实际开发中,经常会遇到这样的场景:某个核心业务功能已经实现,但随着需求迭代,需要为该功能添加额外的附加功能。例如,一个文件处理系统,核心功能是“文件上传”,后续可能需要新增“文件格式校验”“文件大小限制”“上传进度监控”“上传日志记录”等功能;再比如,一个接口调用工具,核心功能是“发送H 阅读全文
posted @ 2025-12-17 22:25 夏尔_717 阅读(30) 评论(0) 推荐(0)
摘要:一、前言 在实际开发中,经常会遇到这样的场景:当某个核心事件发生时,需要触发一系列关联操作。例如,用户完成订单支付后,系统需要自动执行发送支付成功短信、更新订单状态、扣减库存、生成物流单等操作。 如果按照传统的写法,可能会出现如下耦合度极高的代码: public void paySuccess(St 阅读全文
posted @ 2025-12-17 22:25 夏尔_717 阅读(30) 评论(0) 推荐(0)
摘要:一、前言 在SpringBoot实际开发中,经常会遇到接口不兼容的场景:比如系统需要对接多个第三方服务(支付、短信、物流),每个服务提供的SDK接口格式、参数结构、返回值类型都各不相同,但核心业务逻辑(发起请求、接收响应、结果处理)却高度相似;又或者旧系统的旧接口需要被新系统复用,但接口定义与新系统 阅读全文
posted @ 2025-12-17 22:24 夏尔_717 阅读(33) 评论(0) 推荐(0)
摘要:一、前言 在日常开发中,我们经常会遇到这样的场景:需要在不修改原有业务代码的前提下,为核心业务逻辑添加额外功能,比如日志记录、权限校验、事务管理等。 如果直接在业务方法中嵌入这些非核心逻辑,会导致代码耦合度高、可读性差,且重复代码冗余。例如: public class UserServiceImpl 阅读全文
posted @ 2025-12-17 22:24 夏尔_717 阅读(29) 评论(0) 推荐(0)
摘要:一、概述 WebMvcConfigurer是SpringMVC提供的一个配置回调接口,它定义了一系列用于自定义SpringMVC行为的方法,只需创建一个配置类实现该接口,并按需重写方法,即可轻松实现URL映射、拦截器注册、跨域配置等功能,无需编写繁琐的XML配置。 关键特性: 无侵入性:仅需实现接口 阅读全文
posted @ 2025-12-04 14:45 夏尔_717 阅读(24) 评论(0) 推荐(0)
摘要:一、概述 Feign作为Spring Cloud中声明式HTTP客户端,首次调用慢是高频问题,核心成因包括懒加载初始化、连接池未预热、DNS解析耗时、Hystrix/Sentinel初始化等,先明确首次调用慢的核心环节,避免盲目优化: 慢调用环节 具体原因 耗时范围 Feign客户端初始化 Feig 阅读全文
posted @ 2025-12-01 15:39 夏尔_717 阅读(136) 评论(0) 推荐(0)
摘要:一、概述 OpenFeign是一个声明式的Web服务客户端,它使得编写HTTP客户端变得更简单。使用Feign,你只需要创建一个接口并用注解来配置它,Feign会自动完成接口的实现。OpenFeign具有可插拔的注解特性,同时也支持JAX-RS注解和Feign注解。此外,它还支持负载均衡和容错,通过 阅读全文
posted @ 2025-09-05 15:51 夏尔_717 阅读(81) 评论(0) 推荐(0)
摘要:一、前言 随着业务的发展,项目对应的SpringBoot工程的依赖越来越多。Spring容器需要加载更多组件、解析复杂依赖并执行自动装配,导致项目启动时间显著增长。在日常开发或测试过程中,一旦因为配置变更或者其他热部署不生效的变更时,项目重启就需要等待很长的时间影响代码的交付。加快Spring项目的 阅读全文
posted @ 2025-06-25 14:32 夏尔_717 阅读(152) 评论(0) 推荐(0)
摘要:一、概述 Listener是servlet规范中定义的一种特殊类。用于监听servletContext、HttpSession和servletRequest等域对象的创建和销毁事件。监听域对象的属性发生修改的事件。用于在事件发生前、发生后做一些必要的处理。一般是获取在线人数等业务需求。 如做完某一件 阅读全文
posted @ 2025-05-08 22:40 夏尔_717 阅读(716) 评论(0) 推荐(2)
摘要:一、概述 在Spring Boot中,拦截器是一种用于拦截和处理HTTP请求的机制。它是Spring框架提供的一种中间件,用于在请求到达控制器(Controller)之前或之后执行一些共享的逻辑。 Spring Boot的拦截器基于Spring MVC框架中的HandlerInterceptor接口 阅读全文
posted @ 2025-05-08 22:34 夏尔_717 阅读(1448) 评论(0) 推荐(0)
摘要:一、概述 1.1 含义 过滤器是Web三大组件之一,也是项目中常用的工具。过滤器由Servlet提供,基于函数回调实现链式对网络请求和响应的拦截与修改。由于基于Servlet,几乎可以拦截Web服务器管理的所有资源(JSP、图片文件、HTML文件、CSS文件等)。 定义过滤器需要实现javax.se 阅读全文
posted @ 2025-05-08 22:33 夏尔_717 阅读(395) 评论(0) 推荐(0)
摘要:一、概要 Nacos是阿里开放的一款中间件,它主要提供三种功能:持久化节点注册,非持久化节点注册和配置管理。 二、一致性协议 - AP/CP Nacos不是纯粹的AP服务,也不是纯粹的CP服务,而是两者同时支持。 这要从服务注册说起,Provider启动时将自身的信息注册至注册中心,如果注册中心是Z 阅读全文
posted @ 2023-10-20 18:32 夏尔_717 阅读(600) 评论(0) 推荐(0)
摘要:raft算法之所以容易理解,其一是他将一致性问题划分成几个子问题,这几个子问题都是独立、可理解和解释的。从传统的思维来讲,对于一个复杂的系统或者工程,都是大化小,分解实现,然后去尝试融合解决整体逻辑。 一、Raft详解 Raft算法是分布式系统开发首选的共识算法。比如现在流行Etcd、Consul、 阅读全文
posted @ 2023-10-16 14:12 夏尔_717 阅读(388) 评论(0) 推荐(0)
摘要:一、概述 测试是软件流程中非常重要,不可或缺的一个环节。一般的测试分为单元测试,集成测试,端到端的手工测试,这也是构成测试金字塔的三个层级。我们今天将要讨论的话题是契约测试,它是处于单元测试和集成测试中间的一个环节。这三个层级分别测试的场景如下: 单元测试:测试单个service 集成测试:测试由多 阅读全文
posted @ 2023-06-16 18:24 夏尔_717 阅读(479) 评论(0) 推荐(0)
摘要:一、前言 Spring基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。 例如没有SpringBoot的 阅读全文
posted @ 2023-04-06 15:16 夏尔_717 阅读(491) 评论(0) 推荐(0)