美文网首页
责任链模式在spring中的简洁优化

责任链模式在spring中的简洁优化

作者: Alien28 | 来源:发表于2022-06-28 11:12 被阅读0次

    责任链模式顾名思义是对一个业务需求中的具体实现进行解耦,每个链路处理自己的需求,如本次开发中的需求是一条数据将进行多种方式的处理,得到一个处理后的结果,下面是一个简化的流程图。


    未命名文件 (2).png

    代码步骤

    • 定义接口,如IData,具体执行方法为execute
     public interface IData {    
      JSONObject execute(JSONObject record);
    }
    
    • 添加链路类实现接口,每个链路类中添加@Component,@Order(value = *)注解。

    过滤数据

    @Order(value = 1)
    @Component
    public class FilterDataImpl implements IData {
    
        @Override
        public JSONObject execute(JSONObject record) {
            //数据过滤处理
                ****
            return record;
        }
    }
    

    添加数据

    @Order(value = 2)
    @Component
    public class AddDataImpl implements IData {
        @Override
        public JSONObject execute(JSONObject record) {
            //数据添加处理
                ****
            return record;
        }
    }
    

    等等

    • 在责任链处理类中,通过@Resource 初始化List<IData>
    @Component
    public class DataFactory {
    
        @Resource
        private List<IData> dataList;
    
        public String execute(JSONObject originData){
            JSONObject processResult =originData;
            for (IData data : dataList) {
                //数据为空后不继续执行
                if (processResult ==null){
                    return null;
                }
                processResult= data.execute(processResult);
            }
            if (processResult !=null) {
                return processResult.toJSONString();
            }
            return null;
        }
    }
    

    spring优化点

    • 通过@Resource 初始化所有实现IData接口的类
      • 每个实现IData接口的类需要添加@Component注解
    • 对初始化所有实现IData接口的类进行排序,可按顺序执行
      • 每个实现IData接口的类中添加@Order注解其中的value值为顺序

    相关文章

      网友评论

          本文标题:责任链模式在spring中的简洁优化

          本文链接:https://www.haomeiwen.com/subject/wceavrtx.html