zuul初始化过程简析

当在启动类中添加了@EnableZuulProxy或者@EnableZuulServer之后,底层

 

 

二者具体内容有些许差别,zuulProxy引入了Hystrix的断路器功能,但是都是引入了一个配置类,分别是ZuulServerMarkerConfiguration.class
和ZuulProxyMarkerConfiguration.class,那引入这两个类有什么作用呢?分别打开源码:
ZuulServerMarkerConfiguration.class

ZuulProxyMarkerConfiguration.class
这里仅仅是注入了两个Bean,并无特别之处,查看注释之间的@link,
分别指向ZuulServerAutoConfiguration和ZuulProxyAutoConfiguration,打开两者源码。
ZuulServerAutoConfiguration:

ZuulProxyAutoConfiguration:

发现原来它们是通过把ZuulProxyMarkerConfiguration和ZuulProxyMarkerConfiguration的
注入Bean当作开关(@ConditionalOnBean的意思是,如果spring上下文存在注解中的Bean,才创建当前Bean),
来开启两种初始化配置方式,两者注解方式决定了Zuul的功能,@EnableZuulServer的底层初始化类
ZuulServerAutoConfiguration的功能是:
  • 初始化配置加载器
  • 初始化路由定位器
  • 初始化路由映射器
  • 初始化配置刷新监听器
  • 初始化ZuulServlet加载器
  • 初始化ZuulController
  • 初始化Filter执行解析器
  • 初始化一些Filter
  • 初始化Metrix监控
而@EnableZuulProxy的底层初始化类ZuulProxyAutoConfiguration是由ZuulServerAutoConfiguration扩展得来,所以它具有ZuulServerAutoConfiguration的全部功能,
并且新增了如下功能:
  • 初始化服务注册、发现监听器
  • 初始化服务列表监听器
  • 初始化Zuul自定义Endpoint
  • 初始化ZuulServerAutoConfiguration中没有的Filter
  • 引入HTTP客户端的两种方式:HttpClinet与OkHttp
着重说一下server中配置刷新监听器,源码:

 

 

 

 

 

 

 

 

 
 
发现监听器监听applicationEvent事件,如果是符合事件类型,那么调用刷新路由的方法。

 

posted @ 2023-02-09 11:47  八方鱼  阅读(39)  评论(0编辑  收藏  举报