SPRING与设计模式---责任链模式
使用场景:当你想让一个以上的对象有机会能够处理某个请求的时候,就使用责任链模式。
spring框架中的应用:
spring安全框架security使用责任链模式,框架使用者可以动态地添加删除责任(处理request请求)。
UML类图:
活动图:
源码解析:currentPosition表示责任链的要处理请求链条节点的位置,使用additionalFilters来依次处理request请求。additionalFilters中的每个Filter成员都承担某一项具体职责,并且每个Filter都会被执行到。 责任链条的成员执行完自己的职责后,会回调链条的处理请求方法,责任链条会找到下一个链条成员来执行职责,直到链条尾端。
private static class VirtualFilterChain implements FilterChain {
private final FilterChain originalChain; //链条中的节点全部执行完后,处理request请求的对象
private final List<Filter> additionalFilters; //请求实际执行者,
private final FirewalledRequest firewalledRequest;
private final int size;
private int currentPosition = 0; //链条移动的位置,当currentPosition==size,到达链条的尾端。
private VirtualFilterChain(FirewalledRequest firewall

本文探讨了责任链模式在Spring框架中的应用,特别是在Spring Security中的使用。通过UML类图和活动图,展示了如何动态添加和删除处理请求的责任。源码分析揭示了currentPosition和additionalFilters如何协同工作,确保每个Filter按顺序执行其特定职责,形成一个完整的责任链。当一个Filter完成其任务后,它会将请求传递给链条中的下一个Filter,直至处理完毕。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



