Springcloud的版本是Greenwich.SR2,Springboot版本是2.1.6.release.
最近使用到Springcloud的zuul,分析了下源码,记录下,如下的List-1,主要是zuulHandlerMapping方法,构造ZuulHandlerMapping时,传入的RouteLocator是CompositeRouteLocator,而this.zuulController()返回的是ZuulController类。
List-1
@Bean
public ZuulController zuulController() {
return new ZuulController();
}
@Bean
public ZuulHandlerMapping zuulHandlerMapping(RouteLocator routes) {
ZuulHandlerMapping mapping = new ZuulHandlerMapping(routes, this.zuulController());
mapping.setErrorController(this.errorController);
mapping.setCorsConfigurations(this.getCorsConfigurations());
return mapping;
}
如下图1所示,ZuulHandlerMapping继承了AbstractUrlHandlerMapping,如果了解Springmvc,就对这个应该熟悉点了。ZuulHandlerMapping复写了父类的lookupHandler,目的是将url-->controller这个映射关系注册到Springmvc中,如List-2所示。
&nb

本文主要分析了Springcloud Greenwich.SR2版本中Zuul的ZuulController,讲解了ZuulHandlerMapping如何将url映射到ZuulController,并注册到Springmvc中,同时介绍了ZuulController如何处理请求并委托给ZuulServlet。通过源码阅读,揭示了Zuul路由信息与Controller之间的关系。
最低0.47元/天 解锁文章
168万+

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



