错误如下:

Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
2018-06-16 22:20:47.295 [main] ERROR org.springframework.boot.SpringApplication - Application startup failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'requestMappingHandlerMapping' defined in class path resource [org/springframework/boot/autoconfigure/web/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'com.newtouch.springcloud.iclient.IUser' method
public abstract java.util.Map<java.lang.String, java.lang.Object> com.newtouch.springcloud.iclient.IUser.addUser()
to {[/user/addUser],methods=[POST]}: There is already 'userFollBack' bean method
public java.util.Map<java.lang.String, java.lang.Object> com.newtouch.springcloud.iclient.UserFollBack.addUser() mapped.
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1628)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:303)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107)
at com.newtouch.springcloud.ShopApplication.main(ShopApplication.java:15)
Caused by: java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'com.newtouch.springcloud.iclient.IUser' method
public abstract java.util.Map<java.lang.String, java.lang.Object> com.newtouch.springcloud.iclient.IUser.addUser()
to {[/user/addUser],methods=[POST]}: There is already 'userFollBack' bean method
public java.util.Map<java.lang.String, java.lang.Object> com.newtouch.springcloud.iclient.UserFollBack.addUser() mapped.
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping$MappingRegistry.assertUniqueMethodMapping(AbstractHandlerMethodMapping.java:576)
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping$MappingRegistry.register(AbstractHandlerMethodMapping.java:540)
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.registerHandlerMethod(AbstractHandlerMethodMapping.java:264)
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.detectHandlerMethods(AbstractHandlerMethodMapping.java:250)
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.initHandlerMethods(AbstractHandlerMethodMapping.java:214)
at org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.afterPropertiesSet(AbstractHandlerMethodMapping.java:184)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.afterPropertiesSet(RequestMappingHandlerMapping.java:127)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624)
... 16 common frames omitted
@FeignClient(name="SERVICE-USER",fallback=UserFollBack.class)
@RequestMapping("/user")
public interface IUser { @RequestMapping(method=RequestMethod.POST,value="/addUser")
public Map<String, Object> addUser(); }
@Component
public class UserFollBack implements IUser { public Map<String, Object> addUser(){
Map<String, Object> resultMap = new HashMap<String, Object>();
resultMap.put("ok","ss");
return resultMap;
}
}

当服务提供者不可用时,无法通过提供的接口生成service bean,此时就要使用fallback中提供的bean进行服务。
原先报错是因为HelloService中的端口被绑定到了对应的方法上,也就是/refactor/hello4被占用,此时再生成RefactorHelloServiceFallback 的bean时,就会出现端口已经被占用的错误(先后顺序可能不同,都是这个问题),我把RefactorHelloServiceFallback 中的端口变更(添加@RequestMapping("/fallback"),或者其他变更端口的方法)后就没有问题了。
重构前不会出错,是因为既没有公用的HelloService,也没有fallback用到的RefactorHelloServiceFallback ,不存在端口重复的问题。

更改之后启动成功:

@Component
public class UserFollBack implements IUser { @RequestMapping("/fallback")
public Map<String, Object> addUser(){
Map<String, Object> resultMap = new HashMap<String, Object>();
resultMap.put("ok","ss");
return resultMap;
}
}

requestmappering不要加在类上也是可以的

@FeignClient(name="SERVICE-USER",fallback=UserFollBack.class)
public interface IUser { @RequestMapping(method=RequestMethod.POST,value="user/addUser")
public Map<String, Object> addUser(); } @Component
class UserFollBack implements IUser { public Map<String, Object> addUser(){
Map<String, Object> resultMap = new HashMap<String, Object>();
resultMap.put("ok","ss");
return resultMap;
}
}

feign的callback设定后,项目启动错误的更多相关文章

  1. 【转】win7与ubuntu双系统,删除ubuntu后,启动错误error:no such partition grub rescue的修复--不错

    原文网址:http://blog.sina.com.cn/s/blog_541900d50101eu9r.html win7于ubuntu双系统,进入windows后直接格式化硬盘分区将ubuntu删 ...

  2. win7 重装 docker 启动后无法启动错误解决

    描述 win7 重新安装Docker 后启动  Docker Quickstart Terminal 出现如下错误 Starting "default"... (default) ...

  3. 升级了Springboot版本后项目启动不了了

    问题背景 项目上使用的springboot版本是2.1.1.RELEASE,现在因为要接入elasticsearch7.x版本,参考官方文档要求,需要将springboot版本升级到2.5.14. 本 ...

  4. spring项目启动错误——java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext

    最近在搭spring项目框架的时候,遇到一个很伤的问题,翻了很多帖,都报告说什么少spring-context包啊之类的,但实际上spring的那些依赖我根本没漏,下面是我的pom: <depe ...

  5. (转)Spring Boot 2 (七):Spring Boot 如何解决项目启动时初始化资源

    http://www.ityouknow.com/springboot/2018/05/03/spring-boot-commandLineRunner.html 在我们实际工作中,总会遇到这样需求, ...

  6. Spring Boot 2.0(七):Spring Boot 如何解决项目启动时初始化资源

    在我们实际工作中,总会遇到这样需求,在项目启动的时候需要做一些初始化的操作,比如初始化线程池,提前加载好加密证书等.今天就给大家介绍一个 Spring Boot 神器,专门帮助大家解决项目启动初始化资 ...

  7. Spring Boot 2 (七):Spring Boot 如何解决项目启动时初始化资源

    Spring Boot 2 (七):Spring Boot 如何解决项目启动时初始化资源 在项目启动的时候需要做一些初始化的操作,比如初始化线程池,提前加载好加密证书等.今天就给大家介绍一个 Spri ...

  8. Spring Boot 如何解决项目启动时初始化资源

    在我们实际工作中,总会遇到这样需求,在项目启动的时候需要做一些初始化的操作,比如初始化线程池,提前加载好加密证书等.今天就给大家介绍一个 Spring Boot 神器,专门帮助大家解决项目启动初始化资 ...

  9. 记一次在Tomcat部署项目后无法启动该项目的例子

    在一次正常部署后,发现在Tomcat的管理中无法将该项目启动起来,并在Tomcat的日志文件localhost.log中发现以下错误信息: java.lang.NoSuchMethodError: o ...

随机推荐

  1. jquery笔记一——小问题+小技巧

    1.table行单击选中radio(传说中input[type=radio]比input:radio要快) <tr class="rowSelect"> <td& ...

  2. 详解Github的.gitignore忽略文件+.gitignore不生效解决方案+生产配置大奉送

    详解Github的.gitignore忽略文件+.gitignore不生效解决方案+生产配置大奉送 Git中有一个非常重要的一个文件-----.gitignore 今天给大家免费送一个.gitigno ...

  3. nodejs开发——require与exports的使用

    nodejs开发——require与exports的使用 另一片文章总结:http://www.cnblogs.com/hfultrastrong/p/8036682.html require req ...

  4. 微信小程序——wxParse使用方法

    wxParse是一个微信小程序富文本解析组件.现在小程序里面自带了一个<rich-text>组件也能解析富文本,但是表现不尽人意.所以我还是采用的wxParse来解析富文本的. wxPar ...

  5. Android安装后没有完成和打开按钮

    File apkFile = new File(filePath); Intent intent = new Intent(); intent.setFlags(Intent.FLAG_ACTIVIT ...

  6. js在IE与firefox的差别。。。

    1.firefox不能对innerText支持.firefox支持innerHTML但却不支持innerText,它支持textContent来实现innerText,不过默认把多余的空格也保留了.如 ...

  7. Ogre Compositor解析

    Compositor脚本与类型 我们先看下面一张基本的Compositor的脚本图: 上面就是一个Composition资源.在解析时,主要是使用CompositionPass, Compositio ...

  8. IDEA中 @override报错的解决方法

    今天用IDEA导入一个java工程时,碰上一个问题,代码中所有@override处标红,并提示:@override不支持对接口的实现. 网上百度了一下发现, 原因是引用JDK5版本中存在小bug的问题 ...

  9. Numpy 利用数组进行数据处理

    Numpy数组使你可以将许多种数据处理任务表述为简洁的数组表达式(否则需要编写循环). 用数组表达式代替循环的做法,通常被称为矢量化.一般来说,矢量化数组运算要比等价的纯跑一趟湖南快 上一两个数量级( ...

  10. 【WPF】创建文本字符串的路径PathGeometry

    /// <summary> /// 创建文本路径 /// </summary> /// <param name="word">文本字符串< ...