一、根据项目启动去找
一般习惯性去找日志,看加载了哪些,发现有一个zuulFilterInit 类,其他没有了。点进去发现并没有可用的信息。因此判断,zuul网关应该是在启动后懒加载的路由。
因此打算访问一个请求试试/webapi/1
再看日志,发现多了一个ZuulHandlerMapping
点进去看应该是这里
只要找到 routeLocator ,就能找到在哪加载的。
二、routeLocator在哪刷新
看到ZuulHandlerMapping里,然后找到setDirty方法
进到CompositeRouteLocator里,发现已有数据。如果想动态变路由,到这里就结束了。
三、routeLocator在哪初始化
但是我想在初始化的时候就把他变了,因此再往上找,整个类发现只有这个方法初始化了
点过去,发现是ZuulServerAutoConfiguration初始化CompositeRouteLocator给到的。
因为带着@Bean 所以是spring注入的。
因此去找在哪里注入的,找到最像的就是
果然,里面有个ZuulRoute对象,里面就是配置中心的数据。
点过去直接就是配置文件。因此找到了初始化的地方,改这里即可