BladeSentinelAutoConfiguration 中发现bug

Blade 未结 1 243
舒岩
舒岩 剑童 2023-06-21 17:42

在BladeSentinelAutoConfiguration中,feignSentinelBuilder方法仅接受1个RequestInterceptor,而对于BladeFeignRequestInterceptor的bean声明,使用了ConditionalOnMissingBean注解

引入seata后,会声明1个 SeataFeignRequestInterceptor,这将导致BladeFeignRequestInterceptor的bean声明失效,失去feign调用中请求头透传功能

这个配置类应该改为:feignSentinelBuilder方法应该可以接受多个RequestInterceptor注册到builder中,对于BladeFeignRequestInterceptor的bean声明,去掉ConditionalOnMissingBean注解

这是我的理解,请指导一下这是否是1个bug,还是我理解错误



1条回答
  • 2023-06-24 23:12

    去掉ConditionalOnMissingBean就会报错,会提示注册了多个同名的bean,除非修改seata的源码才可以。

    feign我们也不推荐通过请求头传递参数,推荐把用户id通过参数的形式来传递,实现类获取用户id后,再获取完整的用户信息。

    作者追问:2023-06-25 09:22

    提示找到多个bean的方法是同一个类中feignSentinelBuilder报的,这个方法可以使用list接受多个RequestInterceptor注册到builder中

    0 讨论(0)
提交回复