Spring Cloud Feign报错问题解决
这篇文章主要介绍了SpringCloudFeign报错问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
如果我们使用SpringCloud的Feign实现熔断,首先需要自定义一个熔断类,实现你的feign接口,然后实现方法,这些方法就是熔断方法,最后需要在你的feign接口中指定fallback为自定义类
但是启动过程中却出现了
org.springframework.beans.factory.BeanCreationException:Errorcreatingbeanwithname'requestMappingHandlerMapping'definedinclasspathresource
ErrorstartingApplicationContext.Todisplaytheconditionsreportre-runyourapplicationwith'debug'enabled. 2019-12-0110:47:44.584ERROR10548---[main]o.s.boot.SpringApplication:Applicationrunfailed org.springframework.beans.factory.BeanCreationException:Errorcreatingbeanwithname'requestMappingHandlerMapping'definedinclasspathresource[org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]:Invocationofinitmethodfailed;nestedexceptionisjava.lang.IllegalStateException:Ambiguousmapping.Cannotmap'com.sjl.consumer.client.UserClient'method publicabstractjava.lang.Stringcom.sjl.consumer.client.UserClient.getUser(java.lang.Integer) to{[/user/{id}],methods=[GET]}:Thereisalready'userClientFallback'beanmethod publicjava.lang.Stringcom.sjl.consumer.client.UserClientFallback.getUser(java.lang.Integer)mapped. atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1694)~[spring-beans-5.0.10.RELEASE.jar:5.0.10.RELEASE] atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:573)~[spring-beans-5.0.10.RELEASE.jar:5.0.10.RELEASE] atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495)~[spring-beans-5.0.10.RELEASE.jar:5.0.10.RELEASE] atorg.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)~[spring-beans-5.0.10.RELEASE.jar:5.0.10.RELEASE] atorg.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)~[spring-beans-5.0.10.RELEASE.jar:5.0.10.RELEASE] atorg.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)~[spring-beans-5.0.10.RELEASE.jar:5.0.10.RELEASE] atorg.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)~[spring-beans-5.0.10.RELEASE.jar:5.0.10.RELEASE] atorg.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:759)~[spring-beans-5.0.10.RELEASE.jar:5.0.10.RELEASE] atorg.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)~[spring-context-5.0.10.RELEASE.jar:5.0.10.RELEASE] atorg.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:548)~[spring-context-5.0.10.RELEASE.jar:5.0.10.RELEASE] atorg.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140)~[spring-boot-2.0.6.RELEASE.jar:2.0.6.RELEASE] atorg.springframework.boot.SpringApplication.refresh(SpringApplication.java:754)[spring-boot-2.0.6.RELEASE.jar:2.0.6.RELEASE] atorg.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:386)[spring-boot-2.0.6.RELEASE.jar:2.0.6.RELEASE] atorg.springframework.boot.SpringApplication.run(SpringApplication.java:307)[spring-boot-2.0.6.RELEASE.jar:2.0.6.RELEASE] atorg.springframework.boot.SpringApplication.run(SpringApplication.java:1242)[spring-boot-2.0.6.RELEASE.jar:2.0.6.RELEASE] atorg.springframework.boot.SpringApplication.run(SpringApplication.java:1230)[spring-boot-2.0.6.RELEASE.jar:2.0.6.RELEASE] atcom.sjl.consumer.ServiceConsumerApplication.main(ServiceConsumerApplication.java:27)[classes/:na] Causedby:java.lang.IllegalStateException:Ambiguousmapping.Cannotmap'com.sjl.consumer.client.UserClient'method publicabstractjava.lang.Stringcom.sjl.consumer.client.UserClient.getUser(java.lang.Integer) to{[/user/{id}],methods=[GET]}:Thereisalready'userClientFallback'beanmethod publicjava.lang.Stringcom.sjl.consumer.client.UserClientFallback.getUser(java.lang.Integer)mapped. atorg.springframework.web.servlet.handler.AbstractHandlerMethodMapping$MappingRegistry.assertUniqueMethodMapping(AbstractHandlerMethodMapping.java:581)~[spring-webmvc-5.0.10.RELEASE.jar:5.0.10.RELEASE] atorg.springframework.web.servlet.handler.AbstractHandlerMethodMapping$MappingRegistry.register(AbstractHandlerMethodMapping.java:545)~[spring-webmvc-5.0.10.RELEASE.jar:5.0.10.RELEASE] atorg.springframework.web.servlet.handler.AbstractHandlerMethodMapping.registerHandlerMethod(AbstractHandlerMethodMapping.java:267)~[spring-webmvc-5.0.10.RELEASE.jar:5.0.10.RELEASE] atorg.springframework.web.servlet.handler.AbstractHandlerMethodMapping.lambda$detectHandlerMethods$1(AbstractHandlerMethodMapping.java:252)~[spring-webmvc-5.0.10.RELEASE.jar:5.0.10.RELEASE] atjava.util.LinkedHashMap.forEach(LinkedHashMap.java:684)~[na:1.8.0_131] atorg.springframework.web.servlet.handler.AbstractHandlerMethodMapping.detectHandlerMethods(AbstractHandlerMethodMapping.java:250)~[spring-webmvc-5.0.10.RELEASE.jar:5.0.10.RELEASE] atorg.springframework.web.servlet.handler.AbstractHandlerMethodMapping.initHandlerMethods(AbstractHandlerMethodMapping.java:219)~[spring-webmvc-5.0.10.RELEASE.jar:5.0.10.RELEASE] atorg.springframework.web.servlet.handler.AbstractHandlerMethodMapping.afterPropertiesSet(AbstractHandlerMethodMapping.java:189)~[spring-webmvc-5.0.10.RELEASE.jar:5.0.10.RELEASE] atorg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.afterPropertiesSet(RequestMappingHandlerMapping.java:136)~[spring-webmvc-5.0.10.RELEASE.jar:5.0.10.RELEASE] atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1753)~[spring-beans-5.0.10.RELEASE.jar:5.0.10.RELEASE] atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1690)~[spring-beans-5.0.10.RELEASE.jar:5.0.10.RELEASE] ...16commonframesomitted
如果启动服务类出现了上述的错误,并且你的feign接口上定义了@RequestMapping("xxxx")全局访问路径,你只需要将其中的路径移到方法的路径上
例如我定义的
@FeignClient(value="service-provider",fallback=UserClientFallback.class)//声明这是一个Feign接口 @RequestMapping("/user") publicinterfaceUserClient{ @GetMapping("/{id}") StringgetUser(@PathVariable("id")Integerid); }
将其改为
@FeignClient(value="service-provider",fallback=UserClientFallback.class)//声明这是一个Feign接口 //@RequestMapping("/user") publicinterfaceUserClient{ @GetMapping("/user/{id}") StringgetUser(@PathVariable("id")Integerid); }
即可,启动成功
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。