主要观点总结
文章介绍了如何使用责任链模式实现一个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 根据子类名称循环获取子类
………………………………