随笔分类 - Spring / SpringBoot
摘要:一、前言 在日常开发中,我们经常会遇到这样的场景:多个业务流程包含相同的核心步骤,仅在部分细节逻辑上存在差异。例如:数据导入功能(Excel导入、CSV导入)、支付流程(微信支付、支付宝支付)、接口调用流程(参数校验、业务处理、结果封装)等。 如果每个业务流程都单独实现完整逻辑,会导致大量重复代码,
阅读全文
摘要:一、前言 在日常开发中,经常会遇到需要对某个请求进行多步处理的场景。例如用户注册流程,需要依次完成参数校验、手机号合法性验证、用户信息查重、密码加密、数据入库等操作;再比如接口请求的拦截处理,需要经过token验证、权限校验、限流控制、日志记录等步骤。 如果采用传统的写法,可能会出现如下的代码: p
阅读全文
摘要:一、前言 在SpringBoot的业务开发中,我们偶尔会遇到这样的场景:系统中存在一组结构稳定的对象集合,但是需要对这组对象执行的操作却经常变化。比如电商系统中的订单模块,订单里包含了商品、优惠券、运费、税费等不同类型的明细对象,业务上可能需要对订单明细做金额汇总、数据导出、风控校验、发票开具等多种
阅读全文
摘要:一、前言 在实际开发中,经常会遇到这样的场景:某个核心业务功能已经实现,但随着需求迭代,需要为该功能添加额外的附加功能。例如,一个文件处理系统,核心功能是“文件上传”,后续可能需要新增“文件格式校验”“文件大小限制”“上传进度监控”“上传日志记录”等功能;再比如,一个接口调用工具,核心功能是“发送H
阅读全文
摘要:一、前言 在实际开发中,经常会遇到这样的场景:当某个核心事件发生时,需要触发一系列关联操作。例如,用户完成订单支付后,系统需要自动执行发送支付成功短信、更新订单状态、扣减库存、生成物流单等操作。 如果按照传统的写法,可能会出现如下耦合度极高的代码: public void paySuccess(St
阅读全文
摘要:一、前言 在SpringBoot实际开发中,经常会遇到接口不兼容的场景:比如系统需要对接多个第三方服务(支付、短信、物流),每个服务提供的SDK接口格式、参数结构、返回值类型都各不相同,但核心业务逻辑(发起请求、接收响应、结果处理)却高度相似;又或者旧系统的旧接口需要被新系统复用,但接口定义与新系统
阅读全文
摘要:一、前言 在日常开发中,我们经常会遇到这样的场景:需要在不修改原有业务代码的前提下,为核心业务逻辑添加额外功能,比如日志记录、权限校验、事务管理等。 如果直接在业务方法中嵌入这些非核心逻辑,会导致代码耦合度高、可读性差,且重复代码冗余。例如: public class UserServiceImpl
阅读全文
摘要:一、前言 随着业务的发展,项目对应的SpringBoot工程的依赖越来越多。Spring容器需要加载更多组件、解析复杂依赖并执行自动装配,导致项目启动时间显著增长。在日常开发或测试过程中,一旦因为配置变更或者其他热部署不生效的变更时,项目重启就需要等待很长的时间影响代码的交付。加快Spring项目的
阅读全文
摘要:一、概述 Listener是servlet规范中定义的一种特殊类。用于监听servletContext、HttpSession和servletRequest等域对象的创建和销毁事件。监听域对象的属性发生修改的事件。用于在事件发生前、发生后做一些必要的处理。一般是获取在线人数等业务需求。 如做完某一件
阅读全文
摘要:一、概述 在Spring Boot中,拦截器是一种用于拦截和处理HTTP请求的机制。它是Spring框架提供的一种中间件,用于在请求到达控制器(Controller)之前或之后执行一些共享的逻辑。 Spring Boot的拦截器基于Spring MVC框架中的HandlerInterceptor接口
阅读全文
摘要:一、概述 1.1 含义 过滤器是Web三大组件之一,也是项目中常用的工具。过滤器由Servlet提供,基于函数回调实现链式对网络请求和响应的拦截与修改。由于基于Servlet,几乎可以拦截Web服务器管理的所有资源(JSP、图片文件、HTML文件、CSS文件等)。 定义过滤器需要实现javax.se
阅读全文
摘要:一、前言 Spring基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。 例如没有SpringBoot的
阅读全文
摘要:一、概述 在程序执行时候还有一个瓶颈,串行执行,可以通过使用不同线程类快速提升应用的速度。 要启用Spring的异步功能,必须要使用@EnableAsync注解。这样将会透明地使用java.util.concurrent.Executor来执行所有带有@Async注解的方法。@Async所修饰的函数
阅读全文
摘要:YML配置 SpringBoot使用一个全局的配置文件,配置文件名称是固定的 application.properties 语法结构:key=value application.yml 语法结构:key:空格value 配置文件的作用:修改SpringBoot自动配置的默认值,因为SpringBoo
阅读全文
摘要:一、预加载 Springboot项目启动成功后可通过五种方式实现预加载 实现CommandLineRunner接口 实现ApplicationRunner接口 使用@PostConstruct注解进行初始化 实现ApplicationListener接口 实现InitializingBean接口 二
阅读全文
摘要:一、前言 假如现在需要实现一个关于交易的功能,这个功能大致用到的参数都一样,但是在交易类型上分为充值、转账、消费、退款和提现等。不同的交易申请流程都属于交易功能的一部分,但是结合业务后,逻辑算法都是基本独立的。 按照往常的写法,可能会出现如下的代码写法: public String createOr
阅读全文
摘要:一、启动类入口 SpringBoot的启动很简单,通用的代码如下: @SpringBootApplication public class SpringBootDemoApplication { public static void main(String[] args) { SpringAppli
阅读全文

浙公网安备 33010602011771号