专栏名称: Java知音
专注于Java,推送技术文章,热门开源项目等。致力打造一个有实用,有情怀的Java技术公众号!
今天看啥  ›  专栏  ›  Java知音

SpringBoot 项目基于责任链模式实现复杂接口的解耦和动态编排

Java知音  · 公众号  · Java  · 2024-12-10 10:05
    

主要观点总结

文章介绍了如何使用责任链模式实现一个OpenApi接口的功能拆分和业务逻辑的动态编排。

关键观点总结

关键观点1: 项目背景

介绍了一个项目中需要提供一个OpenApi接口给上游系统调用,接口包含多个功能点,客户可以根据需求选择使用或添加特定功能。

关键观点2: 实现思路

考虑使用责任链模式实现功能点的拆分,通过创建抽象类ComponentAbstract和多个子类来实现具体的功能处理,子类之间通过自定义的上下文类Contxt进行数据通信。

关键观点3: 代码实现

介绍了相关的代码实现,包括抽象类ComponentAbstract、业务类Test1、Test2、Test3等,以及上下文类Contxt和AopProxyUtils等工具类的实现。

关键观点4: 测试与演示

通过LiteFlowController进行动态编排的演示,通过调用接口http://localhost:8082/test/chain?index=2,1,3,4传入不同的index顺序,实现业务逻辑中执行顺序的变化。

关键观点5: 注意事项

提到了使用LiteFlow框架可以实现更友好的文档和简单的接入,以及强大的功能。同时提到了公司内部对依赖包引入的审核要求严格,所以自行实现了一个简单版本。


文章预览

一、背景 项目中有一个 OpenApi 接口提供给客户(上游系统)调用。 这个接口中包含十几个功能点,比如:入参校验、系统配置校验、基本数据入库、核心数据入库、发送给消息中心、发送给 MQ..... 不同的客户对这个接口的要求也不同,有些功能不需要,有些需要添加特定功能。 二、思路 基于以上背景,考虑把十几个功能点进行拆分形成独立的功能。因此使用责任链模式实现。 创建一个抽象类( ComponentAbstract.java ),每个拆分功能点继承抽象类形成子类。 子类创建时,需要在 @Component("1") 注解中设置类名,如果不设置咋使用默认的(小驼峰)名称 子类之间的数据通信使用自定义的上下文类( Contxt.java )子类中可以对上下文数据进行修改。(业务解耦) 通过事先定义好的执行顺序,通过 spring 的上下文 ApplicationContext 根据子类名称循环获取子类 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览