责任链模式的源码体现,SpringMVC的异常处理 HandlerExceptionResolver,resolveException
方法就是很明显的责任链模式。
public class HandlerExceptionResolverComposite implements HandlerExceptionResolver, Ordered {
@Nullable
private List<HandlerExceptionResolver> resolvers;
private int order = 2147483647;
public HandlerExceptionResolverComposite() {
}
public void setExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers) {
this.resolvers = exceptionResolvers;
}
public List<HandlerExceptionResolver> getExceptionResolvers() {
return this.resolvers != null ? Collections.unmodifiableList(this.resolvers) : Collections.emptyList();
}
public void setOrder(int order) {
this.order = order;
}
public int getOrder() {
return this.order;
}
@Nullable
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, @Nullable Object handler, Exception ex) {
if (this.resolvers != null) {
Iterator var5 = this.resolvers.iterator();
while(var5.hasNext()) {
HandlerExceptionResolver handlerExceptionResolver = (HandlerExceptionResolver)var5.next();
ModelAndView mav = handlerExceptionResolver.resolveException(request, response, handler, ex);
if (mav != null) {
return mav;
}
}
}
return null;
}
}