Unable to find GatewayFilterFactory with name XXX,Gateway网关启动报错解决

报错信息:

Unable to find GatewayFilterFactory with name XXX,Gateway网关启动报错解决_第1张图片

省流小帮手(一句概括):

         1、检查自己定义的XXXGatewayFilterFactory 是否与配置文件中的 
filters: - name: XXX          完全吻合 ,检查单词是否拼写错误, 配置文件中只拼接gateway前面的部分(百度大部分答案)
        2、检查自己在继承父类  AbstractGatewayFilterFactory 时 是否重写了 name() 方法 如果重写了此方法, 要么删除掉重写的方法, 要么将配置文件中的内容和 改方法的返回值保持一致(我遇到的问题)

3、检查类上面是否有注解@Component ,是否是没有加载到spring容器中 (我猜测可能出现的原因)


前因:
        在学习gateway网关 - 自定义过滤器时,自己手写了demo, 打算定义一个 

MyCustomerGatewayFilterFactory 但是按照教程配置完成后,发现一一直无法启动项目报错信息如下:

Unable to find GatewayFilterFactory with name XXX,Gateway网关启动报错解决_第2张图片

提示找不到我的自定义filter,经过多次比对发现自己没有写错,百度得到的答案大多是我上面原因的第一条:(检查自己定义的XXXGatewayFilterFactory 是否与配置文件中的 
filters: - name: XXX          完全吻合 ,检查单词是否拼写错误, 配置文件中只拼接gateway前面的部分)
Unable to find GatewayFilterFactory with name XXX,Gateway网关启动报错解决_第3张图片

无果,打开源码打个debug:

Unable to find GatewayFilterFactory with name XXX,Gateway网关启动报错解决_第4张图片

 重新启动项目 。。。。。。

这是要查找的filter名称 也就是配置文件种配置的名称
Unable to find GatewayFilterFactory with name XXX,Gateway网关启动报错解决_第5张图片

 
这是spring容器加载到的filter:  一个是我自己定义的filter 点开发现name为null

Unable to find GatewayFilterFactory with name XXX,Gateway网关启动报错解决_第6张图片

 

回过头检查filter类: 发现是自己手贱重写父类方法时,选择了全部, 将name方法也重写了并且没有设置返回值,导致注入到spring容器时 name为null

 

Unable to find GatewayFilterFactory with name XXX,Gateway网关启动报错解决_第7张图片

解决办法:        

        删除重写的   name()方法

重新启动。。。。

Unable to find GatewayFilterFactory with name XXX,Gateway网关启动报错解决_第8张图片

 

记录以上问题的排查跟踪过程,希望对遇到同样问题的小伙伴有所帮助。

结束语:开发过程中遇到问题,习惯了第一时间去google,百度,但是大家手贱成都不一样,出的错误也不一样,还是要自己跟踪分析源码,一步步排查相关类的初始化过程和类的依赖关系的。自己分析可能慢一点, 但是一定会对自己有成长吧! 加油  各位打工人!

你可能感兴趣的:(学习记录,gateway,java)