Zuul的servlet

其实不是tomcat规范的servlet,只是模仿dispatchservlet,因为正常的顺序是dispatchservlet的doservice,调用handler

而Zuul这里是在handler中,在去调ZuulController extends ServletWrappingController中的servlet的service,这个就是假的了。

而Zuul能直接在handler中取找ZuulController,是因为@EnableZuulProxy注册了ZuulProxyConfiguration,注册了一个ZuulHandlerMapping的bean,因为是继承AbstractUrlHandlerMapping,所以重写

lookupHandler方法的时候,根据一个dirty的变量,将handler和配置文件中的所有route都按照route-key,handler(同一个,都是Zuulhandler)注册到handlerMap中,那么在最后调用super.lookuphandler的时候

就可以在第一句Object handler = this.handlerMap.get(urlPath);中直接找到这个handler了(@RequestMapping的找handler的方式不一样,继承的是AbstractHandlerMethodMapping<T> extends AbstractHandlerMapping,getHandlerInternal里面的逻辑也是不一样的)

猜你喜欢

转载自www.cnblogs.com/chuliang/p/9207660.html