背景
随着Spring Cloud Alibaba 2.2.0.RELEASE的发布,终于可以使用最新的Spring Boot和Spring Cloud。
现在的环境
依赖 | 版本 |
---|---|
Spring Boot | 2.2.5.RELEASE |
Spring Cloud | Hoxton.SR7 |
Spring Cloud Alibaba | 2.2.0.RELEASE |
问题
已有工程升级了依赖版本之后,一启动就抛出以下错误:
原错误如下 启动时 创建reginClinet注入Bean失败
错误我剪切了 看到大致的错误即可:
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userController': Unsatisfied dependency expressed through field 'goodsFeignClient'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'top.yangbuyi.service.GoodsFeignClient': FactoryBean threw exception on object creation; nested exception is java.lang.AbstractMethodError: com.alibaba.cloud.sentinel.feign.SentinelContractHolder.parseAndValidateMetadata(Ljava/lang/Class;)Ljava/util/List;
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'top.yangbuyi.service.GoodsFeignClient': FactoryBean threw exception on object creation; nested exception is java.lang.AbstractMethodError: com.alibaba.cloud.sentinel.feign.SentinelContractHolder.parseAndValidateMetadata(Ljava/lang/Class;)Ljava/util/List;
Caused by: java.lang.AbstractMethodError: com.alibaba.cloud.sentinel.feign.SentinelContractHolder.parseAndValidateMetadata(Ljava/lang/Class;)Ljava/util/List;
解决
看了一下代码,问题的表现是从Sentinel抛出,本质是由于feign核心接口方法命名纠正拼写错误导致
Hoxton.SR7 中,fegin.context接口方法的定义为parseAndValidateMetadata
很明显是为了纠正拼写错误。
解决办法
把Hoxton.r7版本降低为 1
重新启动项目测试成功
其它问题
如果出现PathVariable 错误 请在reginClient当中的参数 写明为是哪个参数的注解形式