0
点赞
收藏
分享

微信扫一扫

【设计模式】责任链模式——Spring源码里的责任链模式

在Spring源码中,责任链模式被广泛应用于多个场景,如过滤器链、AOP切面链和配置解析链等。在Spring MVC中,过滤器链是一个典型的责任链模式应用。每个过滤器都可以对请求或响应进行操作,并决定是否继续调用链中的下一个过滤器。以下是过滤器链的简略源码:

public interface Filter {
    boolean filter(Task task);
}

@Component
public class DurationFilter implements Filter {
    @Override
    public boolean filter(Task task) {
        System.out.println("时效性检验");
        return true; // 继续调用下一个过滤器
    }
}

@Component
public class RiskFilter implements Filter {
    @Override
    public boolean filter(Task task) {
        System.out.println("风控拦截");
        return true; // 继续调用下一个过滤器
    }
}

@Service
public class ApplicationService {
    @Autowired
    private List<Filter> filters;

    public void mockedClient() {
        Task task = new Task();
        for (Filter filter : filters) {
            if (!filter.filter(task)) {
                return; // 终止过滤链
            }
        }
        // 执行任务逻辑
    }
}

在这个例子中,Filter接口定义了过滤器的行为,每个具体的过滤器类(如DurationFilter和RiskFilter)实现了这个接口。在ApplicationService中,通过遍历filters列表来依次调用每个过滤器的filter方法,从而实现责任链模式。

举报

相关推荐

0 条评论