强大!Spring Boot 通过责任链模式实现服务的动态编排

文摘   2025-01-19 10:01   新疆  

Spring Boot 3实战案例合集》现已囊括超过80篇精选实战文章,并且此合集承诺将永久持续更新,为您带来最前沿的技术资讯与实践经验。欢迎积极订阅,享受不断升级的知识盛宴!订阅用户将特别获赠合集内所有文章的最终版MD文档(详尽学习笔记),以及完整的项目源码,助您在学习道路上畅通无阻。

【重磅发布】《Spring Boot 3实战案例锦集》PDF电子书现已出炉!

🎉🎉我们精心打造的《Spring Boot 3实战案例锦集》PDF电子书现已正式完成,目前已经有80个案例,后续还将继续更新。文末有电子书目录。

💪💪永久更新承诺

我们郑重承诺,所有订阅合集的粉丝都将享受永久免费的后续更新服务。这意味着,随着技术的不断发展和Spring Boot 3的深入应用,我们的电子书也将持续更新,确保您始终掌握最前沿、最实用的技术知识。

💌💌如何获取
请立即订阅我们的合集点我订阅,并通过私信联系我们,我们将第一时间将电子书发送给您。

现在就订阅合集




环境:SpringBoot3.2.5



1. 简介

由于业务场景日益复杂,对于数据处理流程的需求愈发多样化,传统的固定流程处理方式已无法满足灵活多变的需求。为了应对这一挑战,我们将通过责任链模式实现动态编排功能。

首先,调用者通过参数动态指定一系列处理规则(如策略1、策略2等),这些规则代表不同的业务逻辑或数据处理步骤。

最后,后台接收到用户请求后,会根据传入的策略参数动态构建处理上下文,并按照顺序将这些策略串联成一个责任链。在这个链中,每个策略节点负责执行特定的任务,并将处理结果传递给下一个节点,直至所有策略按顺序执行完毕。

本篇文章我们将要完成以下的功能:

  • 自定义注解

    该注解不仅是用来注册bean,同时还是用来标记它是专门用来处理规则的bean。

  • 定义策略接口及实现

    我们将定义多个策略接口,该接口会本通过上面的注解注册为bean对象。

  • 容器后置初始化组件

    该组件的作用是用来收集容器中使用了自定义注解注册的bean。

  • 策略模式上下文

    我们将定义执行的上下文数据对象。执行策略的容器对象(根据用户输入的策略名称,动态生成容器对象)。

  • 自定义事件监听器

    通过自定义事件监听器来接收由上一步收集到的所有策略bean。在该监听器中我们会提供一个接口用来获取用户期望的策略。


接下来,我们将一步一步的实现上面的功能。

2. 实战案例

2.1 自定义注解

@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Componentpublic @interface ChainComponent {
/**bean的名称*/ @AliasFor(annotation = Component.class) String value() default ""; /**分类*/ String category() default "default" ; /**描述*/ String desc() default "" ;}

注意:该注解上还使用了@Component,Spring是能够识别到注解中的注解的。

value:用来定义bean的名称,注意这里使用了@AliasFor,Spring会自动将value映射到@Component中的value上。
category:在一个项目中我们可能有各种类型的规则,所以通过该属性进行分组管理策略。
desc对当前规则(策略)的说明。

2.2 定义策略接口&实现

public interface ChainProcessor<T> {
  // 执行具体的动作,及调用下一个策略 void doHandler(Context<T> context, ChainContext<T> chain) ;  // 用来描述当前的策略 default String getDesc() { return "" ; }}

接下来,我们将根据类型category定义2组策略

Spring全家桶实战案例源码
spring, springboot, springcloud 案例开发详解
 最新文章